Разработка торгового бота для DEX (Uniswap, PancakeSwap)

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Разработка торгового бота для DEX (Uniswap, PancakeSwap)
Сложный
~1-2 недели
Часто задаваемые вопросы

Направления блокчейн-разработки

Этапы блокчейн-разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1286
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    902
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1122
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    859

Разработка торгового бота для DEX (Uniswap, PancakeSwap)

Каждый блок Ethereum содержит арбитражные возможности на десятки тысяч долларов. MEV-боты захватывают их в миллисекунды. Розничный трейдер с ручным интерфейсом соревнуется с этими системами и проигрывает по определению.

DEX-бот — это не скрипт «купи по сигналу». Это конкурентная система, где задержка в 100 миллисекунд стоит денег, где mempool — это поле боя, и где неправильная логика ставит ваши транзакции под sandwich attack.

Архитектура: три типа DEX-ботов

Арбитражный бот

Находит ценовые расхождения между DEX и извлекает прибыль. Например: ETH стоит $2000 на Uniswap V3 и $2003 на Curve — покупаем на Uniswap, продаём на Curve, $3 прибыли минус gas.

Проблема: на mainnet это делают сотни профессиональных MEV-ботов с прямыми соединениями к builder-нодам через Flashbots. Арбитраж ETH/USDC на Ethereum mainnet — занятая ниша с жёсткой конкуренцией.

Более реалистичные ниши: новые токены в первые часы торгов (низкая конкуренция), мультихоп маршруты через 3+ пулов (сложнее найти автоматически), L2 сети (меньше конкурентов, дешевле газ), экзотические пары на менее популярных DEX.

Sniper бот (new listing)

Отслеживает создание новых пулов на Uniswap (событие PoolCreated в Factory) или добавление ликвидности в новый пул. При детекте — мгновенно покупает токен в расчёте на price discovery pump.

Технически: WebSocket подключение к Ethereum node (Infura, Alchemy, или собственная нода), слушаем pending transactions в mempool и PoolCreated события. При детекте — сборка и отправка транзакции с высоким gas priority fee для приоритета в блоке.

Риски: honeypot токены (продать невозможно из-за кода контракта), rugpull (ликвидность убирается сразу после снайпа), MEV competition (другие боты снайпят ту же возможность).

Базовые защиты: симуляция sell транзакции перед покупкой (через eth_call), проверка контракта на verified source code, проверка что team wallet не держит 90%+ supply.

Market making бот

Выставляет bid/ask ордера вокруг mid-price, зарабатывает на spread. На Uniswap V3 это реализуется через управление range positions — бот открывает narrow range position, реребалансирует при выходе цены за диапазон.

Uniswap V3 SDK предоставляет все инструменты: расчёт оптимального range через tickToPrice, симуляция fees earned через Pool.computeSwapStep.

Техническая реализация

Работа с Uniswap V3

Uniswap V3 — наиболее распространённый DEX для ботов. Ключевые контракты:

  • UniswapV3Factory — создание пулов
  • SwapRouter02 — исполнение свопов (V3 + backward compatible V2)
  • Quoter V2 — off-chain котировки без газа
  • UniversalRouter — универсальный маршрутизатор (поддерживает V2, V3, и другие протоколы)
import { ethers } from "ethers";
import { Pool, Route, Trade, SwapRouter } from "@uniswap/v3-sdk";
import { CurrencyAmount, TradeType, Percent } from "@uniswap/sdk-core";

// Получение котировки через Quoter V2
const quoter = new ethers.Contract(QUOTER_V2_ADDRESS, QuoterV2ABI, provider);
const amountOut = await quoter.callStatic.quoteExactInputSingle({
  tokenIn: WETH_ADDRESS,
  tokenOut: USDC_ADDRESS,
  fee: 3000,  // 0.3%
  amountIn: ethers.utils.parseEther("1"),
  sqrtPriceLimitX96: 0
});

Для production: заменяем callStatic котировки на собственный математический расчёт через on-chain state — это быстрее и не зависит от Quoter availability.

Speed: как попасть в нужный блок

Задержка — это деньги. Уровни оптимизации:

RPC уровень: Infura/Alchemy вносят 50-200ms latency. Собственная Ethereum нода (geth или erigon) — 1-5ms. Для конкурентного арбитража собственная нода обязательна.

Mempool мониторинг: через eth_subscribe("newPendingTransactions") получаем хэши pending транзакций. Для полного payload — eth_getTransactionByHash или txpool_content (если нода поддерживает). Flashbots Protect API даёт доступ к private mempool.

Gas strategy: EIP-1559 транзакции. maxFeePerGas должен быть достаточным для включения в блок. Для срочных транзакций — maxPriorityFeePerGas выше медианы текущего блока. Используем eth_feeHistory для статистики последних блоков.

Bundle через Flashbots: для arb транзакций, которые нужно включить атомарно — Flashbots MEV-Boost. Bundle из нескольких транзакций, которые либо все включаются, либо ни одна. Защита от frontrunning.

Защита от MEV атак на собственный бот

Ваши транзакции тоже видны в mempool и могут быть sandwiched. Бот видит вашу покупку SHIB на $10K, вставляет свою покупку до (frontrun) и продажу после (backrun). Ваш slippage — их прибыль.

Защиты:

  • Private RPC: Flashbots Protect, MEV Blocker — транзакции не попадают в public mempool
  • Tight slippage: 0.1-0.3% slippage для ликвидных пар делает sandwich unprofitable
  • TWAP исполнение: разбить большой ордер на части, исполнять TWAP-стилем

PancakeSwap и мультичейн

PancakeSwap V3 (BNB Chain) — аналогичная архитектура Uniswap V3, те же SDK концепции. BNB Chain: блок каждые 3 секунды (быстрее Ethereum), cheaper gas. PancakeSwap также на Ethereum и Arbitrum.

Мультичейн бот работает с несколькими RPC providers. viem предпочтительнее ethers.js для TypeScript проектов — лучшая типизация, treeshaking, встроенный multicall.

import { createPublicClient, http } from "viem";
import { mainnet, bsc, arbitrum } from "viem/chains";

const clients = {
  ethereum: createPublicClient({ chain: mainnet, transport: http(ETH_RPC) }),
  bsc: createPublicClient({ chain: bsc, transport: http(BSC_RPC) }),
  arbitrum: createPublicClient({ chain: arbitrum, transport: http(ARB_RPC) })
};

Стек и инфраструктура

TypeScript + viem/ethers.js. Node.js worker threads для параллельной обработки нескольких пар. Redis для кэширования состояния пулов. PostgreSQL для истории сделок и PnL аналитики.

Деплой на VPS с низкой latency до Ethereum nodes (Hetzner Frankfurt или AWS eu-west для европейских нод). PM2 для process management + Telegram алерты на ошибки.

Ориентиры по срокам

Базовый арбитражный бот для одной DEX-пары — 3-5 дней. С мультиDEX routing, mempool мониторингом и Flashbots интеграцией — 1-2 недели. Sniper бот с симуляцией sell — 3-5 дней. Market making bot с Uniswap V3 LP management — 1-1.5 недели. Стоимость рассчитывается после уточнения стратегии и целевых сетей.