Разработка бота для фронтраннинга

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка бота для фронтраннинга
Сложная
~1-2 недели
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Разработка бота для фронтраннинга

Каждую секунду в 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 месяцев.

Стоимость рассчитывается после обсуждения стратегий и целевых сетей.