Разработка бота для DEX-арбитража

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка бота для DEX-арбитража
Сложная
~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

Разработка бота для DEX-арбитража

На Uniswap V3 ETH/USDC стоит $3 201.50. На SushiSwap тот же пул — $3 199.80. Разница $1.70 на ETH. Чтобы это было прибыльно, нужно учесть: gas 21 000 + 150 000 (два свапа) ≈ 170 000 gas × 30 gwei × $3 200 / 1e9 ETH = ~$16 на gas. Значит, чтобы выйти в плюс на сделке в $1 000, разница должна быть хотя бы 1.6%. А на $100 000 хватит и 0.016%. Именно поэтому DEX арбитраж работает только при достаточном размере позиции или достаточном ценовом расхождении — и flash loans делают этот бизнес доступным без собственного капитала.

Почему большинство арбитражных ботов не приносят прибыль

Mempool конкуренция и MEV

Самый сложный враг DEX-арбитражника — не конкуренты, а MEV-боты с прямым доступом к блок-билдерам. Через Flashbots eth_sendBundle транзакция попадает напрямую к билдеру, минуя public mempool. Это значит, что фронтранер не видит её до включения в блок.

Если ваш бот отправляет транзакции в public mempool — вы в проигрышной позиции. Обычный gas auction означает, что другие боты видят вашу транзакцию, оценивают прибыльность и выставляют более высокий gas. Либо ваша транзакция не включается (потеряли gas), либо включается после их транзакции, которая уже исполнила арбитраж.

Решение: отправлять все транзакции через Flashbots или MEV Blocker (агрегатор нескольких private relays). Плюс — можно включать несколько транзакций в один bundle с atomic исполнением.

Slippage и расчёт реальной цены

Проблема большинства начинающих реализаций: расчёт арбитражной возможности по spot price пула без учёта price impact. Берёте ETH/USDC на Uniswap V3 — sqrtPriceX96 даёт текущую цену, но не цену после вашего свапа на $50 000.

Реальная цена после свапа зависит от:

  • Текущей ликвидности в активном диапазоне (Uniswap V3)
  • Размера вашей транзакции
  • Spread через несколько tick ranges (если позиция большая)

Для V3 правильный расчёт требует симуляции свапа через Quoter контракт или off-chain через @uniswap/v3-sdk. Разница между spot price и реальной ценой исполнения при $100k свапе на среднеликвидном пуле — 0.3-1.5%. Без учёта этого расчёт прибыльности будет неверным.

Gas оптимизация: разница между прибылью и убытком

На mainnet Ethereum arbitrage работает только при оптимизированном gas usage. Типичная ошибка: два отдельных ERC-20 approve + swap = +43 000 gas сверху. Решение — использовать permit (EIP-2612) для токенов с поддержкой, или заранее одобрить максимальную сумму и не переодобрять.

Ещё больше экономит atomic arbitrage через flash loan в одном контракте: нет нескольких transfer между EOA и DEX, нет отдельных транзакций. Весь арбитраж — одна транзакция: flash loan → swap A → swap B → repay loan → profit. Gas на такую транзакцию: 200 000 - 400 000 в зависимости от протоколов.

Как мы строим DEX-арбитражный бот

Архитектура: on-chain контракт + off-chain executor

Система состоит из двух частей:

On-chain контракт — исполняет сделку атомарно. Реализует flash loan callback (Aave IFlashLoanReceiver или Uniswap V3 IUniswapV3FlashCallback), выполняет свапы, проверяет profit в конце транзакции и reverts если profit < минимального порога.

function executeArbitrage(
    address tokenIn,
    uint256 amountIn,
    SwapPath[] calldata path,
    uint256 minProfit
) external {
    // Flash loan from Aave
    // Execute swaps along path
    // Assert profit >= minProfit, else revert
    // Repay flash loan
    // Transfer profit to owner
}

Revert при недостаточной прибыли — ключевая защита: если рынок изменился пока транзакция шла к мемпулу, контракт откатится, потратив только base gas (~21 000), а не весь gas исполнения свапов.

Off-chain executor (Node.js/Rust) — постоянно мониторит состояние пулов, рассчитывает арбитражные возможности, формирует и отправляет транзакции через Flashbots.

Источники данных о ценах

Метод Латентность Стоимость Применение
WebSocket subscribe к node (eth_subscribe) ~10-50ms Высокая (собственная нода) Mainnet production
Alchemy/Infura WebSocket ~100-300ms Средняя Разработка, тестирование
The Graph (GraphQL) ~500ms-2s Низкая Не подходит для арбитража
Uniswap V3 Subgraph ~1-5s Бесплатно Не подходит

Для production арбитража — собственная Ethereum нода или минимум dedicated endpoint. Public RPC на Alchemy free tier с rate limiting убьёт любой серьёзный бот.

Альтернатива собственной ноде: Fiber (bloXroute), Eden Network — платные сервисы с прямым доступом к mempool и ускоренной пропагацией транзакций.

Поиск оптимального пути: Bellman-Ford

Для multi-hop арбитража (A→B→C→A) задача нахождения прибыльного пути — это задача нахождения отрицательного цикла в графе цен. Классический алгоритм — Bellman-Ford на графе, где узлы = токены, рёбра = пулы, веса = log(exchange_rate).

На практике для 5-10 DEX и 50-100 токенов граф небольшой, Bellman-Ford считается за миллисекунды. При большем количестве пар переходят на эвристики или ограничивают глубину поиска до 3-hop.

Cross-chain арбитраж через bridges

Арбитраж между Ethereum mainnet и Arbitrum/Optimism технически возможен, но проигрышен в большинстве случаев: bridge latency от 10 минут до 7 дней делает атомарность невозможной. К моменту завершения bridge рыночная цена выравнивается. Исключение — fast bridges (Hop, Connext) с latency 5-30 минут и возможностью hedging через perp позицию.

Мониторинг и управление рисками

Арбитражный бот в production требует мониторинга нескольких метрик:

  • Win rate по транзакциям: если > 30% транзакций revert из-за price change — слишком медленный executor или слишком низкий minProfit порог
  • Gas efficiency: отношение реальной прибыли к потраченному gas
  • Capital utilization: если flash loan лимиты в Aave исчерпаны — снижается доступный размер позиций
  • Конкурентная среда: рост среднего base fee в пиковые часы снижает прибыльность

Grafana + Prometheus для метрик, алерты через Telegram bot при падении win rate или balances.

Процесс разработки

Аналитика (2-3 дня). Определение целевых DEX, сетей, токен пар. Анализ конкурентной среды — сколько ботов уже работает в выбранном сегменте.

Разработка контракта (1 неделя). Flash loan интеграция, multi-hop swap логика, profit assertion. Тесты на mainnet fork через Foundry.

Разработка executor (1-2 недели). WebSocket мониторинг пулов, Bellman-Ford / path finding, Flashbots bundle отправка.

Оптимизация и деплой (3-5 дней). Gas профилирование, fine-tuning minProfit порогов, деплой в production.

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

Базовый бот (2 DEX, один network, flash loan) — 1-2 недели. Multi-DEX, multi-path с Flashbots интеграцией — 2-4 недели. Cross-chain или advanced MEV стратегии — от 6 недель. Стоимость рассчитывается индивидуально.