Интеграция бота с 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

Интеграция бота с StonFi SDK (TON)

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

Чем TON отличается от EVM в контексте торгового бота

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

В Ethereum транзакция либо выполнилась, либо ревертнулась — всё синхронно в одном блоке. В TON контракты общаются через асинхронные сообщения. Отправив swap-сообщение на STON.fi router, вы не знаете результат немедленно. Нужно слушать входящие сообщения на адрес кошелька (transfer notification от jetton) или polling состояния через TON API.

Это означает: бот должен иметь state machine для каждой операции. Отправили swap → ждём подтверждения → если нет за N секунд → retry или алерт. Простая send-and-forget логика приводит к потере транзакций.

Jetton transfer notification

STON.fi работает с jetton (аналог ERC-20 на TON). Когда swap выполнен, router отправляет transfer_notification на адрес получателя. Бот должен уметь парсить эти сообщения: декодировать BoC (Bag of Cells), извлекать jetton amount и sender. 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 — текущие резервы
// Рассчитываем ожидаемый output через AMM формулу

SDK предоставляет getExpectedOutputs() для расчёта слиппеджа. Важно: котировки устаревают быстро на активном рынке. Для торгового бота — кэшировать не дольше 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 использует модель gas, отличную от Ethereum. Для jetton-swap нужно отправить достаточно TON для оплаты forward fees по цепочке сообщений: router → jetton wallet → user wallet. STON.fi SDK возвращает правильный gasAmount в buildSwapTxParams — не занижайте его «из экономии». Если газа не хватит — сообщение просто не дойдёт, и funds могут зависнуть на промежуточном контракте.

Мониторинг и безопасность

Приватный ключ кошелька храним через переменные окружения, никогда в коде. Для продакшн-бота — аппаратный кошелёк или отдельный hot wallet с минимальным балансом для работы.

Telegram-уведомления через bot API на каждую транзакцию: актив, объём, цена, газ. При ошибках — немедленный алерт с текстом ошибки.

Ориентиры по срокам

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