Інтеграція бота з PancakeSwap SDK

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

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

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

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

  • 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
    1121
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    858

Інтеграція бота з PancakeSwap SDK

PancakeSwap — крупнейший DEX на BNB Chain за обсягом торгів. SDK надає готові інструменти для розрахунку маршрутів, побудови транзакцій та роботи з ліквідністю. Але розрив між «SDK працює у demo» та «бот стабільно торгує 24/7» — великий. Проблеми починаються на перший день реального трафіку.

Типові проблеми при інтеграції

Routing через застарілий стан пулів

PancakeSwap Smart Router будує маршрут обміну через кілька пулів. Розрахунок маршруту відбувається локально на основі даних про резерви пулів. Якщо кеш резервів застарів на кілька блоків — передбачений output та реальний розходяться. Бот виставляє amountOutMin на основі застарілого розрахунку, транзакція проходить, але зі slippage вищим, ніж очікувано. Або навпаки — amountOutMin занадто агресивний та транзакція ревертується.

Рішення: інвалідація кешу пулу при кожному новому блоці через provider.on('block', ...) та примусовий re-fetch резервів для гарячих пулів перед кожним розрахунком маршруту. На BNB Chain блок кожні 3 секунди — дані застарівають швидко.

Gas estimation на BSC

BNB Chain історично мав нестабільні параметри gas price. З переходом на EIP-1559 (BEP-95) ситуація поліпшилась, але не повністю. Боти, які використовують provider.getFeeData() напрямо, іноді відправляють транзакції з gas price нижче мінімального — транзакції зависають у мемпулі.

Робочий паттерн: отримувати gas price з невеликим буфером (1.1x від поточного baseFee + розумний priorityFee), з fallback на hardcoded мінімум якщо RPC повертає аномальні значення.

Архітектура інтеграції

Установка та конфігурація SDK

PancakeSwap v4 SDK (@pancakeswap/sdk, @pancakeswap/smart-router) працює з viem та ethers.js. Ініціалізація вимагає настройки providers для кількох RPC — один RPC недостатньо для бота з високою частотою запитів.

import { SmartRouter, SmartRouterTrade } from '@pancakeswap/smart-router'
import { createPublicClient, http } from 'viem'
import { bsc } from 'viem/chains'

const client = createPublicClient({
  chain: bsc,
  transport: http(process.env.BSC_RPC_URL),
  batch: { multicall: true } // критично для продуктивності
})

Параметр batch: { multicall: true } автоматично батчить RPC-вызови через Multicall3. Замість 10 окремих eth_call для отримання резервів пулів — один Multicall-запит. На BNB Chain це різниця між 300ms та 30ms за цикл розрахунку.

Розрахунок маршруту

Smart Router перебирає можливі маршрути через V2 пулы, V3 пулы та стабільні свопи. Параметри мають прямий вплив на якість маршруту:

const trade = await SmartRouter.getBestTrade(
  inputAmount,
  outputToken,
  TradeType.EXACT_INPUT,
  {
    gasPriceWei: await getGasPrice(),
    maxHops: 3,     // максимум прибутків через пулы
    maxSplits: 3,   // максимум паралельних маршрутів
    poolProvider: cachedPoolProvider,
    quoteProvider,
  }
)

maxSplits: 3 дозволяє розділити сделку на кілька маршрутів для кращого виконання крупних обсягів. Для small-cap токенів з одним пулом це не потрібно та тільки сповільнює розрахунок.

Побудова та надсилання транзакції

Після розрахунку маршруту — побудова calldata через SmartRouter.encodeTrade(), додавання deadline та slippage tolerance, надсилання через wallet client:

const { value, calldata } = SwapRouter.swapCallParameters(trade, {
  slippageTolerance: new Percent(50, 10000), // 0.5%
  recipient: walletAddress,
  deadline: BigInt(Math.floor(Date.now() / 1000) + 60),
})

Slippage tolerance 0.5% — розумний default для ліквідних пар. Для low-cap токенів з високою волатильністю може потребуватися 1-3%.

Мониторинг та обробка ошибок

Бот повинен коректно обробляти: revert транзакції (пересчитати та переотправити або пропустити?), RPC timeout (переключитися на backup RPC), зміну ціни між розрахунком та виконанням (оновити розрахунок).

Логування: кожна транзакція — запис у PostgreSQL: вхідні параметри, розрахований output, фактичний output з Transfer event, спожитий газ, timestamp. Це основа для аналізу ефективності стратегії та відладки.

Орієнтири за часом

Базова інтеграція з PancakeSwap SDK для простого swap-бота — 3-5 днів. Бот з кешуванням пулів, мониторингом, логуванням та обробкою ошибок — 1-2 тижні. Мультистратегійний бот з власним маршрутизатором — від 3 тижнів.

Вартість розраховується індивідуально.