Разработка бота для фронтраннинга
Каждую секунду в Ethereum мемпуле находятся тысячи неподтверждённых транзакций. Крупная покупка токена на Uniswap видна до включения в блок. Бот замечает её, отправляет свою покупку с более высоким gas price — попадает в блок первым, поднимает цену. Жертва покупает дороже. Бот продаёт. Классический sandwich. Это и есть frontrunning в его базовой форме.
Разработка frontrunning-бота — это одновременно работа с низкоуровневым мемпулом, экономикой MEV и инженерией скорости. Задержка в 100 миллисекунд стоит реальных денег.
Архитектура: от мемпула до исполнения
Мониторинг мемпула
Стандартный eth_subscribe("pendingTransactions") через WebSocket даёт хэши транзакций. Для frontrunning нужно тело транзакции: txpool_content или eth_getTransactionByHash — дополнительный RPC-вызов с задержкой. Это уже проигрыш по скорости.
Правильный подход — подключение к нодам с newPendingTransactions full subscription (некоторые клиенты поддерживают отдачу полного тела сразу). Или прямое подключение к нескольким нодам одновременно — первый кто прислал транзакцию, тот быстрее. Используем: собственная geth/Erigon нода + Alchemy/Infura как fallback, WebSocket соединения к обоим.
Декодирование calldata: определяем целевой контракт и функцию. Для Uniswap v2/v3 — парсим swapExactTokensForTokens, exactInputSingle, другие swap-функции. Рассчитываем ожидаемое price impact. Если impact > threshold — кандидат для sandwich.
Расчёт прибыльности
Бот должен рассчитать за миллисекунды:
- Текущие резервы пула (SLOAD из кэшированного состояния или RPC-вызов)
- Price impact жертвы
- Оптимальный размер собственной транзакции (через бинарный поиск или аналитическую формулу)
- Стоимость газа (front + back транзакции)
- Ожидаемая прибыль после вычета газа
Если expectedProfit > gasCost * safetyFactor — отправляем пачку транзакций. Safetyфactor обычно 1.2-1.5, иначе при малейшем slip теряете деньги.
Приоритет исполнения: gas price vs Flashbots
Наивный подход — газ выше чем у жертвы. Работало до 2021. Сейчас это priority gas auction: вы поднимаете газ, конкуренты видят и поднимают своё, прибыль уходит в газ. Плюс failed транзакции платят газ — если жертва отменила транзакцию или конкурент обогнал, вы всё равно заплатили.
Flashbots MEV-Boost — правильное решение. Вы отправляете bundle (несколько транзакций как единица) напрямую блок-билдеру, минуя публичный мемпул. Либо bundle выполняется целиком, либо не включается вообще — нет риска частичного исполнения и оплаты за failed транзакции. Оплата билдеру через coinbase transfer в конце бандла (часть прибыли).
const bundle = [
{ transaction: frontrunTx, signer: wallet },
{ hash: victimTxHash }, // жертва
{ transaction: backrunTx, signer: wallet }
];
await flashbotsProvider.sendBundle(bundle, targetBlockNumber);
Типы стратегий
Sandwich attacks — наиболее распространены на DEX. Требуют точного расчёта slippage жертвы: если у неё minAmountOut почти равен оптимальному — sandwich не сработает, жертва получит revert.
Pure backrunning — только back транзакция, без front. Например: крупный swap создаёт arb-возможность между Uniswap и Curve. Бот замечает это, вставляет свой arb-swap сразу после транзакции жертвы в том же блоке. Менее агрессивно, меньше конкуренции с другими MEV-ботами.
Liquidation frontrunning — мониторинг позиций в Aave/Compound, которые близки к liquidation threshold. При падении цены оракула — гонка за первой ликвидацией с liquidation bonus.
Технический стек
Написано на TypeScript (viem/ethers.js) или Rust для максимальной скорости декодирования. Go также популярен среди MEV-ботов из-за низкой latency.
Для вычислений swap — либо реализация формул Uniswap v2/v3 локально (без RPC), либо Uniswap SDK v4 с локальным кэшем состояния пулов. Локальное симулирование через eth_call с stateOverride позволяет проверить транзакцию без отправки.
Flashbots SDK (@flashbots/ethers-provider-bundle) для EVM-цепочек. На других сетях: MEV Blocker для Gnosis Chain, aori/mev-share на Ethereum для более кооперативных стратегий.
| Инструмент | Назначение |
|---|---|
| viem / ethers.js v6 | RPC взаимодействие, подпись транзакций |
| Flashbots SDK | Bundle submission |
| Erigon node | Низкая latency мемпул |
| Redis | Кэш состояния пулов |
| PostgreSQL | История исполненных бандлов, PnL |
Конкурентная среда и реалии
MEV-боты — высококонкурентная среда. На Ethereum mainnet работают сотни профессиональных ботов от хорошо финансируемых команд. Arbitrum и другие L2 предлагают меньше конкуренции, но и меньше объёма.
Реальная прибыльность зависит от: уникальности стратегии, скорости инфраструктуры, качества кэширования состояния. Публично известные стратегии быстро становятся нерентабельными из-за копирования.
Ориентиры по срокам
Базовый sandwich-бот для одной DEX (Uniswap v2/v3) с Flashbots интеграцией — 1-2 недели. Мультичейн бот с несколькими стратегиями и мониторингом — 3-5 недель. Кастомная MEV-инфраструктура с собственной нодой и симулятором — от 2 месяцев.
Стоимость рассчитывается после обсуждения стратегий и целевых сетей.







