Розробка торгового бота для DEX (Uniswap, PancakeSwap)

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

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

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

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

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

Розробка торгового бота для DEX (Uniswap, PancakeSwap)

Кожен блок Ethereum містить арбітражні можливості на десятки тисяч доларів. MEV-боти захоплюють їх у мілісекунди. Розничний трейдер з ручним інтерфейсом змагається з цими системами та програє за визначенням.

DEX-бот — це не скрипт «купи по сигналу». Це конкурентна система, де затримка в 100 мілісекунд коштує грошей, де mempool — це поле бою, та де неправильна логіка ставить ваші транзакції під sandwich attack.

Архітектура: три типи DEX-ботів

Арбітражний бот

Знаходить ціни розбіжності між DEX та добуває прибуток. Наприклад: ETH коштує $2000 на Uniswap V3 та $2003 на Curve — купуємо на Uniswap, продаємо на Curve, $3 прибутку мінус gas.

Проблема: на mainnet це роблять сотні професійних MEV-ботів з прямими з'єднаннями до builder-нод через Flashbots. Арбітраж ETH/USDC на Ethereum mainnet — зайнята ніша з жорсткою конкуренцією.

Реалістичніші ніші: нові токени в перші години торгів (низька конкуренція), мультихоп маршрути через 3+ пули (складніше знайти автоматично), L2 сіті (менше конкурентів, дешевше газ), екзотичні пари на менш популярних DEX.

Sniper бот (new listing)

Відстежує створення нових пулів на Uniswap (подія PoolCreated у Factory) або додавання ліквідності до нового пулу. При детекті — миттєво купує токен у розрахунку на price discovery pump.

Технічно: WebSocket підключення до Ethereum node (Infura, Alchemy, або власна нода), слухаємо pending transactions у mempool та PoolCreated события. При детекті — збирання та відправка транзакції з високим gas priority fee для пріоритету в блоці.

Ризики: honeypot токени (продати неможливо через код контракту), rugpull (ліквідність убирається одразу після снайпу), MEV конкуренція (інші боти снайпять ту ж можливість).

Базові захисти: симуляція sell транзакції перед покупкою (через eth_call), перевірка контракту на verified source code, перевірка що team wallet не тримає 90%+ supply.

Market making бот

Виставляє bid/ask ордери навколо mid-price, заробляє на spread. На Uniswap V3 реалізується через управління range positions — бот відкриває narrow range position, ребалансує при виході ціни за діапазон.

Uniswap V3 SDK надає всі інструменти: розрахунок оптимального range через tickToPrice, симуляція fees earned через Pool.computeSwapStep.

Технічна реалізація

Робота з Uniswap V3

Uniswap V3 — найпоширеніший DEX для ботів. Ключові контракти:

  • UniswapV3Factory — створення пулів
  • SwapRouter02 — виконання свопів (V3 + backward compatible V2)
  • Quoter V2 — off-chain котировки без газу
  • UniversalRouter — універсальний маршрутизатор (підтримує V2, V3 та інші протоколи)
import { ethers } from "ethers";
import { Pool, Route, Trade, SwapRouter } from "@uniswap/v3-sdk";
import { CurrencyAmount, TradeType, Percent } from "@uniswap/sdk-core";

// Отримання котировки через Quoter V2
const quoter = new ethers.Contract(QUOTER_V2_ADDRESS, QuoterV2ABI, provider);
const amountOut = await quoter.callStatic.quoteExactInputSingle({
  tokenIn: WETH_ADDRESS,
  tokenOut: USDC_ADDRESS,
  fee: 3000,  // 0.3%
  amountIn: ethers.utils.parseEther("1"),
  sqrtPriceLimitX96: 0
});

Для production: замінюємо callStatic котировки на власний математичний розрахунок з on-chain стану — це швидше та не залежить від Quoter availability.

Speed: як потрапити в потрібний блок

Затримка — це гроші. Рівні оптимізації:

RPC рівень: Infura/Alchemy вносять 50-200ms latency. Власна Ethereum нода (geth або erigon) — 1-5ms. Для конкурентного арбітражу власна нода обов'язкова.

Mempool моніторинг: через eth_subscribe("newPendingTransactions") отримуємо хеші pending транзакцій. Для повного payload — eth_getTransactionByHash або txpool_content (якщо нода підтримує). Flashbots Protect API дає доступ до private mempool.

Gas стратегія: EIP-1559 транзакції. maxFeePerGas повинен бути достатнім для включення в блок. Для терміних транзакцій — maxPriorityFeePerGas вище медіани поточного блоку. Використовуємо eth_feeHistory для статистики останніх блоків.

Bundle через Flashbots: для arb транзакцій, які потрібно включити атомарно — Flashbots MEV-Boost. Bundle з кількох транзакцій, які або все включаються, або ні одна. Захист від frontrunning.

Захист від MEV атак на власний бот

Ваші транзакції теж видні у mempool та можуть бути sandwiched. Бот бачить вашу покупку SHIB на $10K, вставляє свою покупку до (frontrun) та продажу після (backrun). Ваш slippage — їхній прибуток.

Захисти:

  • Private RPC: Flashbots Protect, MEV Blocker — транзакції не попадають у public mempool
  • Tight slippage: 0.1-0.3% slippage для ліквідних пар робить sandwich unprofitable
  • TWAP execution: розбити великий ордер на частини, виконувати TWAP-стилем

PancakeSwap та мультичейн

PancakeSwap V3 (BNB Chain) — аналогічна архітектура Uniswap V3, ті ж SDK концепції. BNB Chain: блок кожні 3 секунди (швидше ніж Ethereum), дешевше газ. PancakeSwap також на Ethereum та Arbitrum.

Мультичейн бот працює з кількома RPC providers. viem краще за ethers.js для TypeScript проектів — краща типізація, treeshaking, вбудований multicall.

import { createPublicClient, http } from "viem";
import { mainnet, bsc, arbitrum } from "viem/chains";

const clients = {
  ethereum: createPublicClient({ chain: mainnet, transport: http(ETH_RPC) }),
  bsc: createPublicClient({ chain: bsc, transport: http(BSC_RPC) }),
  arbitrum: createPublicClient({ chain: arbitrum, transport: http(ARB_RPC) })
};

Стек та інфраструктура

TypeScript + viem/ethers.js. Node.js worker threads для паралельної обробки кількох пар. Redis для кеширування стану пулів. PostgreSQL для історії сделок та PnL аналітики.

Деплой на VPS з низькою latency до Ethereum нод (Hetzner Frankfurt або AWS eu-west для європейських нод). PM2 для process management + Telegram алерти на помилки.

Орієнтири по строкам

Базовий арбітражний бот для однієї DEX-пари — 3-5 днів. З мультиDEX routing, mempool моніторингом та Flashbots інтеграцією — 1-2 тижні. Sniper бот з симуляцією sell — 3-5 днів. Market making bot з Uniswap V3 LP management — 1-1.5 тижні. Вартість розраховується після уточнення стратегії та цільових сітей.