Інтеграція бота з StonFi SDK (TON)

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Інтеграція бота з StonFi SDK (TON)
Середній
~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

Інтеграція бота з STON.fi SDK (TON)

TON — це не EVM-сумісний блокчейн, і підходи до розробки ботів тут принципово інші. STON.fi — найбільший DEX на TON з AMM-архітектурою. Інтеграція з ним через офіційний SDK відкриває автоматизовану торгівлю на цьому ринку, але вимагає розуміння особливостей TON: асинхронних повідомлень, actor model та fee-механіки, відмінної від EVM.

Чим TON відрізняється від EVM у контексті торгового бота

Асинхронна модель транзакцій

В Ethereum транзакція либо виконалася, либо ревертнулася — всім синхронно в одному блоці. У TON контракти спілкуються через асинхронні повідомлення. Після відправки swap-повідомлення до маршрутизатора STON.fi, ви не знаєте результат одразу. Потрібно слухати вхідні повідомлення на адресу гаманця (transfer notification від jetton) або polling стану через TON API.

Це означає: бот повинен мати state machine для кожної операції. Відправили swap → чекаємо підтвердження → якщо немає за N секунд → retry або alert. Простої send-and-forget логіка приводить до втрати транзакцій.

Jetton transfer notification

STON.fi працює з jetton (аналог ERC-20 на TON). Коли своп виконаний, маршрутизатор відправляє transfer_notification на адресу одержувача. Бот повинен уміти парсити ці повідомлення: декодувати BoC (Bag of Cells), витягувати jetton amount та відправника. STON.fi SDK надає типи для цього, але інтеграція вимагає налаштування TON listener.

Інтеграція з STON.fi SDK

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

import { DEX, pTON } from "@ston-fi/sdk";
import TonWeb from "tonweb";

const tonweb = new TonWeb(
  new TonWeb.HttpProvider("https://toncenter.com/api/v2/jsonRPC", {
    apiKey: process.env.TONCENTER_API_KEY
  })
);

const router = tonweb.open(
  new DEX.v1.Router("EQB3ncyBUTjZUA5EnFKR5_EnOMI9V1tTEAAPaiU71gc4TiUt")
);

STON.fi SDK v2 підтримує пулы DEX v1 та v2. Для нового коду використовуємо v2 router — він підтримує складніші сценарії routing та кращу інтеграцію з API.

Отримання котировок

const pool = await router.getPool({
  token0: "EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9c",  // TON
  token1: USDT_JETTON_ADDRESS
});

const data = await pool.getData();
// data.reserve0, data.reserve1 — поточні резерви
// Розраховуємо очікуваний вихід через AMM формулу

SDK надає getExpectedOutputs() для розрахунку slippage. Важливо: котировки застарівають швидко на активному ринку. Для торгового бота — кэшувати не довше 5-10 секунд.

Виконання свопу

const swapTxParams = await router.buildSwapTonToJettonTxParams({
  userWalletAddress: wallet.address,
  proxyTon: new pTON.v1(),
  offerAmount: new TonWeb.utils.BN("1000000000"),  // 1 TON у nanotons
  askJettonAddress: USDT_JETTON_ADDRESS,
  minAskAmount: expectedOutput.mul(99).div(100),  // 1% slippage tolerance
  queryId: Date.now()  // унікальний id для tracking
});

await wallet.sendTransfer({
  secretKey: keyPair.secretKey,
  toAddress: swapTxParams.to,
  amount: swapTxParams.gasAmount,
  seqno: await wallet.getSeqno(),
  payload: swapTxParams.payload
});

queryId — критично важливий параметр для tracking. Включається в повідомлення відповіді та дозволяє сопоставити swap-запрос з результатом в асинхронній моделі.

Побудова торгового бота

Архітектура

Price monitor: періодичного polling цін через STON.fi API (https://api.ston.fi/v1/pools) або прямі on-chain запросити. API зручніше — повертає нормалізовані дані по всім пулам. On-chain надійніше при ненадійному API.

Strategy engine: логіка торгових рішень. Для арбітражного бота — порівняння цін STON.fi з іншими TON DEX (DeDust). Для трендового бота — технічні індикатори на історичних цінах з API.

Transaction manager: черга транзакцій з retry логікою. TON вимагає правильного seqno для гаманця — паралельна відправка приводить до помилок. Відправляємо транзакції послідовно або через окремі sub-wallets.

Result tracker: polling останніх транзакцій гаманця через TON API для підтвердження виконання свопів. https://toncenter.com/api/v2/getTransactions?address=...

Управління газом на TON

TON використовує модель газу, відмінну від Ethereum. Для jetton-swap потрібно відправити достатньо TON для оплати forward fees по цепочці повідомлень: маршрутизатор → jetton wallet → гаманець користувача. STON.fi SDK повертає правильний gasAmount в buildSwapTxParams — не знижуйте його «для економії». Якщо газу не вистачить — повідомлення просто не дійде, і засоби можуть зависнути на проміжному контракті.

Моніторинг та безпека

Зберігаємо приватний ключ гаманця через змінні оточення, ніколи в коді. Для продакшн-бота — апаратний гаманець або окремий hot wallet з мінімальним балансом для роботи.

Telegram-сповіщення через bot API на кожну транзакцію: актив, обсяг, ціна, газ. При помилках — одразу alert з текстом помилки.

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

Простий бот для ручного свопу через STON.fi SDK — 1-2 дні. Повнофункціональний торговий бот з price monitoring, strategy engine та transaction tracking — 3-5 днів. З інтеграцією кількох DEX та арбітражною логікою — 1-1.5 тижня. Вартість розраховується після уточнення стратегії та вимог.