Розробка торгового бота для DEX на Base
Розробити торгового бота для DEX на Base — означає вирішити задачу отримання доходу на арбітражі в мережі з низьким газом і високою пропускною здатністю. Base, побудована на OP Stack і керована Coinbase, пропонує унікальні умови: транзакції підтверджуються за секунди, а вартість газу в десятки разів нижча за Ethereum. Однак автоматизація торгівлі вимагає глибокого розуміння архітектури Aerodrome та Uniswap V3, вміння оптимізувати смарт-контракти та правильно розраховувати slippage. Наша команда блокчейн-інженерів з десятирічним досвідом побудувала більше 50 ботів для різних мереж, і ми готові поділитися перевіреними рішеннями. Завдяки низькому газу на Base можна заощадити на операційних витратах порівняно з mainnet. Середня вартість розробки такого бота визначається після аналізу, включаючи audit смарт-контрактів.
Екосистема DEX на Base
Ключові майданчики для інтеграції:
| DEX | Модель | Об'єм / день | Особливості |
|---|---|---|---|
| Aerodrome Finance | ve(3,3) AMM + CLOB | $1B+ | Форк Velodrome, нативний DEX Base |
| Uniswap V3 | Concentrated liquidity | $500M+ | Стандартний V3, ті ж контракти що mainnet |
| BaseSwap | Fork Uniswap V2 | $50M | Менше ліквідності |
| SushiSwap | V2 + Trident | $20M | Мультичейн, крос-DEX арбітраж |
Aerodrome — пріоритет для глибокої інтеграції: 60%+ DEX об'єму Base проходить через нього.
Чому Base підходить для торгових ботів?
Base використовує централізований sequencer під управлінням Coinbase, що принципово змінює MEV-ландшафт. Публічного mempool в Ethereum-сенсі немає — транзакції публікуються атомарно. Класичні sandwich-атаки через frontrunning практично неможливі, зате арбітраж між DEX працює ефективно. Розміщення сервера в us-east-1 (AWS) дає мінімальну затримку до sequencer. Транзакції відправляються через https://mainnet.base.org RPC або через Alchemy/Infura.
Aerodrome: архітектура, важлива для бота
Aerodrome успадковує Velodrome V2 архітектуру з двома типами пулів:
Volatile pools (Pool.sol): стандартна x*y=k формула. Підходить для некорельованих пар (ETH/USDC, cbBTC/USDC).
Stable pools (Pool.sol з stable=true): крива x³y + y³x = k — оптимізована для близьких за ціною активів (USDC/USDT, cbETH/wstETH). Важливо: для стейбл-пулів getAmountOut() дає інший результат при тих же вхідних даних.
// Aerodrome Router ABI
const AERODROME_ROUTER = '0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43'
const routes = [{
from: WETH_ADDRESS,
to: USDC_ADDRESS,
stable: false, // Для volatile пари
factory: AERODROME_FACTORY
}]
const amounts = await aerodromeRouter.getAmountsOut(amountIn, routes)
Помилка, яку роблять розробники з EVM-фоном: використовують stable: false для всіх пар. Для USDC/USDbC пари це дає розрахунковий amountOut у 5–10% гірший за реальний через неправильну криву.
ve(3,3) та epoch rewards
Aerodrome використовує veAERO (locked voting tokens) для направлення emissions в пули. Для арбітражного бота це важливо опосередковано: пули з високими emissions приваблюють більше LP, мають менший slippage. Відстеження голосувань та emissions допомагає передбачати, де з'явиться глибока ліквідність.
Як працює арбітраж з flash loan на Base?
Найдоступніший і стабільніший MEV на Base — арбітраж між різними DEX:
- Aerodrome vs Uniswap V3: та ж пара (ETH/USDC) торгується на двох різних майданчиках з різною ціною через асинхронну поведінку LP.
- Стейблкоін арбітраж: USDC vs USDbC (bridged USDC) vs axlUSDC — часто торгуються з slight discount/premium на різних пулах.
- cbETH / wstETH арбітраж: похідні ETH активи, ціна прив'язана до ETH через exchange rate. При відхиленні від справедливої вартості — арбітражна можливість.
Базовий цикл бота:
async function checkArbitrage(tokenA: Address, tokenB: Address) {
// Паралельний запит цін з двох DEX
const [aeroPrice, uniPrice] = await Promise.all([
getAerodromePrice(tokenA, tokenB, amountIn),
getUniswapV3Price(tokenA, tokenB, amountIn)
])
const priceDiff = Math.abs(aeroPrice - uniPrice) / Math.min(aeroPrice, uniPrice)
if (priceDiff > MIN_PROFIT_THRESHOLD) {
const gasEstimate = await estimateArbitrageGas(...)
const gasCostUSD = gasEstimate * gasPrice * ethPrice
const grossProfit = calculateProfit(aeroPrice, uniPrice, amountIn)
if (grossProfit > gasCostUSD * 1.5) { // Мінімум 1.5x покриття gas
await executeArbitrage(...)
}
}
}
Atomic arbitrage через flash loan
На Base доступні Aave V3 flash loans (контракт деплоєн на Base). Атомарний арбітраж: беремо flash loan → купуємо дешевше → продаємо дорожче → повертаємо flash loan + fee (0.09%). Flash loan fee встановлює мінімальний поріг прибутковості — різниця цін має бути > 0.09% + gas.
contract BaseArbitrageBot is IFlashLoanSimpleReceiver {
function executeArbitrage(address token, uint256 amount, bytes calldata params) external {
POOL.flashLoanSimple(address(this), token, amount, params, 0);
}
function executeOperation(
address asset, uint256 amount, uint256 premium,
address, bytes calldata params
) external override returns (bool) {
(address dexA, address dexB, bytes memory swapDataA, bytes memory swapDataB)
= abi.decode(params, (address, address, bytes, bytes));
IERC20(asset).approve(dexA, amount);
(bool successA,) = dexA.call(swapDataA);
require(successA, "Swap A failed");
uint256 received = IERC20(outputToken).balanceOf(address(this));
IERC20(outputToken).approve(dexB, received);
(bool successB,) = dexB.call(swapDataB);
require(successB, "Swap B failed");
uint256 repayAmount = amount + premium;
IERC20(asset).approve(address(POOL), repayAmount);
return true;
}
}
Контракт — мінімалістичний. Ніякого storage state — все через calldata та події.
Що входить в розробку бота?
В рамках робіт ми надаємо:
- Дослідження MEV-можливостей на Base зі звітом за обсягами та конкуренцією.
- Інтеграція з Aerodrome та іншими DEX (на вибір) з підтримкою volatile та stable пулів.
- Арбітражний двигун з підтримкою flash loan (Aave V3).
- Моніторинг цін, gas price та аномалій з алертами в Telegram/Discord.
- Документація з розгортання та управління ботом.
- Підтримка після запуску протягом 1 місяця.
Стек розробки
Бот: TypeScript + viem (переважніше ethers.js для Base через кращу підтримку EIP-1559 типів). Bull (Redis-backed queue) для управління чергою транзакцій. Prometheus + Grafana для метрик.
Контракти: Solidity 0.8.24 + Foundry. Fork-тест на Base mainnet через forge test --fork-url https://mainnet.base.org. Foundry підтримує Base як target network.
Деплой бота: Docker на AWS EC2 (us-east-1) або Fly.io для простоти, з автоматичним рестартом через systemd/Supervisor.
Процес роботи
Дослідження (2–3 дні). Аналіз MEV можливостей на Base через Dune Analytics, оцінка обсягів та конкуренції.
Розробка (1–2 тижні). Інтеграція з Aerodrome та Uniswap V3, арбітражний двигун, flash loan контракт, моніторинг.
Тестування (3–5 днів). Backtesting на історичних даних Base, paper trading в fork-тестах.
Запуск. Деплой з малими сумами → моніторинг продуктивності → масштабування.
Оцінка ризиків арбітражних стратегій
| Ризик | Ймовірність | Зниження |
|---|---|---|
| Slippage вищий за розрахунковий | Середня | Split великих ордерів, динамічний gas price |
| Flash loan не пройшов | Низька | Перевірка liquidity в пулі перед операцією |
| Маніпуляція ціною оракула | Низька | Price deviation alerts, зупинка при 2% |
| Відмова RPC ноди | Середня | Резервні провайдери (Alchemy, Infura) |
Моніторинг та управління ризиками
Price deviation alerts: якщо різниця цін між DEX перевищує 2% — потенційна аномалія (маніпуляція, баг оракула). Бот має зупиняти роботу до з'ясування.
Gas price tracking: на Base gas нестабільний при високому навантаженні. Бот має перевіряти eth_gasPrice та встановлювати maxFeePerGas динамічно. Жорсткий ліміт gas price — вище порогу арбітраж нецікавий.
Slippage на великих позиціях: розрахунок getAmountsOut для суми X не враховує, що під час виконання ціна зсунеться. Для великих свопів потрібна симуляція з урахуванням price impact — або split на кілька менших транзакцій.
Dead man's switch: якщо бот не здійснював транзакцій більше N хвилин за наявності можливостей — алерт на Telegram/Discord. Могло статися: нода впала, немає балансу на gas, unexpected revert.
За даними Dune Analytics, обсяг Aerodrome перевищує $1 млрд на день.
Отримайте консультацію експерта для вашого проекту — ми допоможемо вибрати стратегію та реалізувати бота під ключ. Зв'яжіться з нами, щоб обговорити деталі.







