Разработка торгового бота для 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 недели. Стоимость рассчитывается после уточнения стратегии и целевых сетей.







