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

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка бота для DEX-арбітражу
Складний
~1-2 тижні
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1285
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1120
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    588
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    854

Розроблення бота для DEX-арбітражу

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

Чому більшість арбітражних ботів не приносять прибуток

Конкуренція mempool та MEV

Найскладніший ворог DEX-арбітражника — не конкуренти, а MEV-боти з прямим доступом до block builder. Через Flashbots eth_sendBundle ваша транзакція йде прямо до builder, минаючи публічний mempool. Це означає, що фронтранер не бачить її до включення в блок.

Якщо ваш бот відправляє транзакції в публічний mempool — ви в програшній позиції. Звичайний gas auction означає, що інші боти бачать вашу транзакцію, оцінюють прибутковість і виставляють вищий газ. Або ваша транзакція не включається (потрачений газ), або включається після їхньої транзакції, яка вже виконала арбітраж.

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

Slippage та розрахунок реальної ціни

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

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

  • Поточної ліквідності в активному діапазоні (Uniswap V3)
  • Розміру вашої транзакції
  • Спреду через кілька діапазонів тиків (якщо позиція велика)

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

Оптимізація газу: різниця між прибутком та збитком

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

Ще більше економії від atomic арбітражу через flash loan в одному контракті: немає кількох transfer між EOA та DEX, немає окремих транзакцій. Весь арбітраж — одна транзакція: flash loan → swap A → swap B → repay loan → profit. Газ для такої транзакції: 200,000 - 400,000 залежно від протоколів.

Як ми будуємо DEX-арбітражний бот

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

Система складається з двох частин:

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

function executeArbitrage(
    address tokenIn,
    uint256 amountIn,
    SwapPath[] calldata path,
    uint256 minProfit
) external {
    // Flash loan від Aave
    // Виконати своп по маршруту
    // Assert profit >= minProfit, інакше revert
    // Repay flash loan
    // Трансфер прибутку власнику
}

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

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

Джерела даних про ціни

Метод Latency Вартість Застосування
WebSocket підписка на ноду (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. Публічний 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 арбітраж через мости

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

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

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

  • Win rate по транзакціях: якщо > 30% транзакцій reverts через зміну ціни — занадто повільний executor або занадто низький minProfit поріг
  • Gas efficiency: відношення реального прибутку до витраченого газу
  • Capital utilization: якщо flash loan ліміти в Aave вичерпані — доступний розмір позиції зменшується
  • Конкурентне середовище: зростання середнього base fee в пікові години зменшує прибутковість

Grafana + Prometheus для метрик, алерти через Telegram bot при падінні win rate або змін балансів.

Процес розроблення

Аналітика (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, один мережа, flash loan) — 1-2 тижні. Multi-DEX, multi-path з Flashbots інтеграцією — 2-4 тижні. Cross-chain або advanced MEV стратегії — від 6 тижнів. Вартість розраховується індивідуально.