Розробка торгового бота для DEX на TON (StonFi, DeDust)

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка торгового бота для DEX на TON (StonFi, DeDust)
Складний
~1-2 тижні
Часті запитання

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1286
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1122
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    859

Розробка торговельного бота для TON DEX (StonFi, DeDust)

TON blockchain принципово відрізняється від EVM: асинхронна модель сповіщень, відсутність глобального стану у звичайному сенсі, FunC/Tact замість Solidity. Торговельний бот для StonFi або DeDust — це не «переписати Ethereum бот іншою мовою». Це інша архітектура з іншими точками відмови.

Асинхронність TON: чому звичайні паттерни не працюють

Транзакції у TON — це ланцюги сповіщень

На Ethereum своп — один виклик, один receipt, один статус: success або reverted. У TON один запит користувача породжує ланцюг internal messages між контрактами. Своп на StonFi v2:

  1. Гаманець користувача → Jetton Wallet: transfer з forward payload
  2. Jetton Wallet → Router: transfer_notification
  3. Router → Pool: swap
  4. Pool → Jetton Wallet (output token): internal_transfer
  5. Jetton Wallet → гаманець користувача: transfer_notification

Кожен крок — окремої транзакція з окремим хешем. Успіх першої транзакції не гарантує успіх всієї ланцюга. Якщо крок 3 або 4 провалиться — на кроках 5-6 прийде bounced message та вихідні токени повернуться.

Бот повинен: відправити крок 1, запам'ятати outgoing message hash, стежити дерево транзакцій за in_msg_hash, чекати либо успішного кроку 5, або bounced message з поверненням.

TON API для мониторингу транзакцій

TON Center API v2: GET /v2/transactions?address={}&limit=20&lt_={}&hash={} — отримуємо транзакції адреси. Для відслідковування конкретної ланцюга використовуємо lt (logical time) та hash для паганації.

Більш зручний варіант для ботів: TON API getBlockTransactions + WebSocket через TON Access. При отриманні кожного блоку — перевіряємо транзакції своєї адреси. Latency 1-3 секунди після фіналізації блоку (TON фіналізує за 5-6 секунд).

Бібліотеки: @ton/ton (TypeScript, офіційна) або tonutils-go (Go). Для Python — pytoniq-core.

Робота з StonFi та DeDust

StonFi v2: роутер та message payload

StonFi v2 swap payload для jetton → jetton:

import { StonApiClient } from '@ston-fi/api';
import { DEX } from '@ston-fi/sdk';

const client = new StonApiClient();
const dex = client.openDex(DEX.v2);

const txParams = await dex.getSwapJettonToJettonTxParams({
  userWalletAddress: walletAddress,
  offerJettonAddress: USDT_ADDRESS,
  askJettonAddress: STON_ADDRESS,
  offerAmount: toNano('100'),  // 100 USDT
  minAskAmount: toNano('95'),  // 5% slippage
});

await wallet.sendTransaction(txParams);

minAskAmount — це on-chain slippage protection. Якщо пул не може дати мінімальну суму — транзакція bounced, токени повертаються. Бот повинен обчислювати minAskAmount на основі поточної ціни пулу мінус допустимий slippage.

DeDust: vault-based архітектура

DeDust відрізняється архітектурою: замість прямої відправки в pool — через vault. Кожен токен має свій vault контракт. Своп починається з depositing у vault з attached swap params у payload:

import { Asset, Factory, MAINNET_FACTORY_ADDR, Pool, VaultJetton } from '@dedust/sdk';

const factory = client.open(Factory.createFromAddress(MAINNET_FACTORY_ADDR));
const tonVault = client.open(await factory.getNativeVault());

// TON → Jetton своп
await tonVault.sendSwap(wallet.getSender(), {
  poolAddress: pool.address,
  amount: toNano('1'),
  gasAmount: toNano('0.25'),
});

DeDust підтримує як Uniswap v2-стиль (volatile pools), так і Curve-стиль (stable pools). Для стейблкоїн-пар — stable pool з меншим slippage.

Отримання поточної ціни без свопу

Для StonFi: GET https://api.ston.fi/v1/pools/{poolAddress} повертає token0_address, token1_address, reserve0, reserve1. Ціна = reserve1 / reserve0 з урахуванням decimals.

Для DeDust: виклик Pool.getEstimatedSwapOut — view функція, повертає amountOut для заданого amountIn. Точніше, ніж розрахунок по резервам, особливо для stable пулів.

Стратегії: що реалізовано на TON DEX

Arbitrage StonFi ↔ DeDust. Одна та ж пара jetton/TON торгується на обох DEX. Цінове розходження >0.5% (вище комісій + газ) — можливість арбітражу. Атомарності немає (немає flash loans у тому ж сенсі), тому арбітраж двохетапний: своп на DEX1, потім своп на DEX2. Ризик: за час виконання першого свопу другий пул зміниться цену.

Grid trading. Покупка jetton при зниженні ціни нижче grid level, продажа при піднесенні. Проста стратегія, працює на боковому ринку. Для TON пар з достатньою ліквідністю ($500K+ TVL) — практично.

DCA (Dollar Cost Averaging). Автоматична покупка фіксованого обсягу TON→Jetton за розписанням. Реалізується через cron job + TON wallet SDK. Мінімальна складність, добре введення в TON bot розробку.

Інфраструктура

Гаманець. Для бота потрібен hot wallet — TON гаманець v4 або v5. Seed phrase зберігається в зашифрованому вигляді (AES-256), ніколи plaintext. Ліміт коштів на hot wallet — тільки операційний запас, основні кошти окремо.

Нода або RPC. Публічний TON Center безкоштовний, але rate-limited (1 req/sec). Для активної торгівлі — TON Center Pro ($49/місяць, 25 req/sec) або власна lite-server нода.

Моніторинг. Telegram bot для уведомлень про угоди (ironically, бот моніторить себе через Telegram). Prometheus метрики: trades_per_hour, profit_per_day, error_rate.

Процес розробки

Прототип на TypeScript (3-5 днів). Підключення до TON, чтення цін з StonFi/DeDust API, симуляція стратегії на історичних даних.

Розробка бота (1-2 тижні). Transaction builder, state machine для відслідковування pending swaps, error handling для bounced messages.

Тестування на TON testnet (3-5 днів). TON має повнофункціональний testnet з testnet StonFi deployment.

Production деплой. VPS + мониторинг. Запуск з малим капіталом, поступове масштабування.

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

DCA або grid бот з однією парою: 1-1.5 тижня. Arbitrage система з мониторингом кількох пар та автоматичним rebalancing: 2-3 тижні.