Разработка снайпер-бота для DEX
Новый токен добавляется в ликвидность на Uniswap V2 — и через 2-3 блока первые покупатели уже в позиции. Это не случайность и не скорость реакции человека. Снайпер-боты мониторят mempool на addLiquidity и addLiquidityETH транзакции, и отправляют buy-транзакцию с более высоким gas, чтобы попасть в тот же блок сразу после деплоя ликвидности.
Где ломаются типичные реализации
Неверная логика определения liquidity add
Простой вариант — слушать событие Mint(address sender, uint amount0, uint amount1) на пуле Uniswap V2. Проблема: событие эмитируется после исполнения, не до. К моменту, когда бот увидел событие, блок уже закрыт. Нужно работать с pending transactions в mempool.
Правильный подход: eth_subscribe("newPendingTransactions") через WebSocket к Ethereum-ноде + декодирование calldata транзакций. Сигнатура addLiquidityETH(address token, ...) — 0xf305d719. Если calldata начинается с этого selector — это liquidity add, и бот должен отреагировать до включения в блок.
Но большинство ботов делают ошибку: парсят только прямые вызовы Router. Токены могут добавлять ликвидность через кастомный контракт-лаунчер, который вызывает Router внутри. Для этого нужен trace API (debug_traceTransaction или Tenderly) или мониторинг factory события PairCreated как альтернативный сигнал.
Gas войны и приоритет
Просто поставить высокий gasPrice недостаточно — это гонка, которую выигрывает кто угодно. Правильная схема: EIP-1559 транзакции с maxPriorityFeePerGas (tip), достаточным чтобы попасть выше целевой транзакции в блоке, но не переплачивать лишнее.
Для advanced сценариев — прямая отправка в Flashbots bundle: eth_sendBundle позволяет включить свою транзакцию в тот же блок что и target, гарантированно после неё, без риска попасть перед liquidity add (что бесполезно) или в другой блок (что поздно).
Anti-bot механизмы
Большинство токенов 2023-2024 годов имеют anti-sniper защиту: первые N блоков после листинга транзакции от адресов, купивших в первый блок, облагаются налогом 99% или блокируются. Сниматься это начинает через _maxWalletAmount лимиты и временные ограничения.
Обходы: покупка через несколько адресов с малыми суммами, задержка покупки на 1-3 блока, анализ контракта токена перед покупкой на наличие anti-bot кода (паттерны: _isSniper, _blacklist, antiBotEnabled).
Архитектура бота
Мониторинг mempool
WebSocket соединение к собственной Ethereum-ноде (Geth/Erigon) или к провайдеру с mempool доступом (Alchemy, Infura Premium, QuickNode). Публичные ноды имеют rate limits и latency 50-200ms. Собственная нода на том же датацентре что и крупные майнеры/валидаторы — latency 5-20ms.
Mempool subscription → calldata decode → token contract fetch →
safety checks → buy tx construction → gas estimation → send
Safety checks перед покупкой
Автоматический анализ контракта токена до покупки:
- Проверка на honeypot: симуляция
sellчерезeth_callпосле покупки. Если продажа реверсируется — ловушка - Проверка owner функций:
mint()без ограничений,setFee(uint256)до 100%,renounceOwnership()не вызван - Проверка ликвидности: достаточно ли ETH в пуле для нашей покупки без >X% slippage
- Верификация токена на известных скам-базах (Token Sniffer API, GoPlus Security API)
Симуляция через Foundry forge script --fork-url или через Tenderly Simulation API — позволяет увидеть точный результат транзакции до отправки.
Управление позицией
Take-profit и stop-loss через мониторинг Swap событий пула: если цена упала на X% от цены покупки — автоматическая продажа. Trailing stop: обновляет ориентир при росте цены.
Проблема при продаже: если токен имеет sell tax — нужно учитывать его в расчёте минимального amountOutMin для Uniswap Router. Иначе транзакция реверсируется из-за slippage protection.
Стек
Node.js / TypeScript с ethers.js v6 или viem для взаимодействия с сетью. Собственный Ethereum-нода (Geth или Erigon) для mempool. Redis для кэша проверенных контрактов. Flashbots SDK для приватных бандлов.
Для Uniswap V3 мониторинга — Uniswap SDK v3 для расчёта маршрутов и quoter calls.
Ориентиры по срокам
Базовый снайпер с mempool мониторингом и простыми safety checks — 3-5 дней. Версия с Flashbots интеграцией, anti-bot обходами и trailing stop — 1-2 недели.
Стоимость рассчитывается индивидуально.







