Разработка торгового бота для DEX на Base
Разработать торгового бота для DEX на Base — значит решить задачу получения дохода на арбитраже в сети с низким газом и высокой пропускной способностью. Base, построенная на OP Stack и управляемая Coinbase, предлагает уникальные условия: транзакции подтверждаются за секунды, а стоимость газа в десятки раз ниже Ethereum. Однако автоматизация торговли требует глубокого понимания архитектуры Aerodrome и Uniswap V3, умения оптимизировать смарт-контракты и правильно рассчитывать slippage. Наша команда блокчейн-инженеров с десятилетним опытом построила более 50 ботов для разных сетей, и мы готовы поделиться проверенными решениями. За счёт низкого газа на Base можно сэкономить до 500 USD ежемесячно на операционных расходах по сравнению с mainnet. Средняя стоимость разработки такого бота начинается от 3 000 USD, включая 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:
- Аэродром 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 млрд в день.
Получите консультацию эксперта для вашего проекта — мы поможем выбрать стратегию и реализовать бота под ключ. Свяжитесь с нами, чтобы обсудить детали.







