TON Blockchain для розробників: Stars, USDT, TonConnect та платежі в Telegram
Технічний розбір інтеграції TON у Telegram Mini Apps з досвіду The Open Squad. Архітектура, TonConnect, Jettons (USDT), Telegram Stars, ескроу-контракти, безпека.
TON Blockchain у 2026 — це не «крипта для фанатів Telegram», а інфраструктурний шар для всього платіжного стека месенджера. У The Open Squad ми інтегрували TON у кожен продукт: USDT-виплати в The Open Earn, ескроу-контракти в The Open Guarantor. Цей гайд — те, що ми зрозуміли по дорозі.
Чому TON для Telegram-продуктів
Альтернативи:
- Stripe / PayPal — повільні, дорогі (3–5%), не працюють для користувачів у 50+ країнах, які ми обслуговуємо
- Мульти-чейн крипто-гаманці — UX-кошмар: користувачі мусять знати мережі, адреси, газ
- Внутрішній баланс без виведення — користувачі йому не довіряють
TON одночасно вирішує три проблеми:
- Низькі комісії — частки цента за транзакцію (проти $0.30+ у Stripe)
- Швидкість — фінальність за 5 секунд
- UX — TonConnect дозволяє підключити гаманець за два тапи, без копіювання адрес
Архітектура TON за дві хвилини
TON — шардований PoS-блокчейн. Нативна одиниця — TON. Над нею працюють:
- Jettons — стандарт токенів (TON-аналог ERC-20). USDT на TON — це Jetton, випущений Tether
- NFTs — стандарт унікальних токенів
- Workchains / Shardchains — шарди для масштабування
Для розробників це означає:
- Один SDK (
@ton/ton,@ton/core) обробляє і TON, і Jettons - Жодного жонглювання мережами
- Транзакція — це повідомлення від одного контракту до іншого (усе є контракт, у тому числі гаманці)
Підключення гаманця через TonConnect
TonConnect — open-source протокол, що з’єднує dApp із гаманцем користувача. Усі великі TON-гаманці його підтримують: Tonkeeper, MyTonWallet, Tonhub.
У Mini App це виглядає так:
import { TonConnectUI } from "@tonconnect/ui";
const tonConnectUI = new TonConnectUI({
manifestUrl: "https://yourapp.com/tonconnect-manifest.json",
});
// Відкриваємо модалку вибору гаманця
await tonConnectUI.openModal();
// Після підключення — інформація про гаманець доступна:
const wallet = tonConnectUI.wallet;
console.log(wallet?.account.address);
Маніфест (tonconnect-manifest.json) — це статичний JSON із метаданими вашого застосунку. Гаманці читають його, щоб показати ваш значок та назву на екрані згоди.
Прийом платежів: TON та USDT
Сценарій 1: прийом TON. Генеруйте депозитну адресу для кожного користувача (через суб-акаунт HD-wallet). Слухайте нові транзакції через TON API:
from pytoniq import LiteClient
async def listen_deposits(address: str):
async with LiteClient.from_mainnet_config() as client:
txs = await client.get_transactions(address, count=10)
for tx in txs:
if tx.in_msg.value > 0:
process_deposit(user_id, tx.in_msg.value)
Сценарій 2: прийом USDT (Jetton). USDT — це Jetton-контракт. У кожного отримувача є свій Jetton-гаманець (окрема адреса від основного TON-гаманця). Ви слухаєте транзакції на Jetton-гаманці, а не на основному.
Найпростіший шлях: використати hosted TON Index API (Tonapi.io, TonCenter) із вебхуками на вхідні перекази.
Telegram Stars: цифрова валюта Telegram
Stars — віртуальна валюта Telegram (1 Star ≈ $0.013). Використовується для покупки цифрових товарів: підписок, кастомних емодзі, тем, преміум-функцій ботів.
На відміну від TON, Stars не можна вільно вивести — Telegram конвертує Stars у TON лише для верифікованих творців і з затримкою.
Коли використовувати Stars замість TON:
- Платний контент (статті, курси, преміум-функції ботів)
- Внутрішні покупки (стікери, теми)
- Чайові та донати
- App Store / Play Store комплаєнс (Apple і Google вимагають Stars для in-app цифрових покупок)
Коли краще TON напряму:
- B2B-виплати
- P2P-ескроу
- Великі суми
- Коли користувачам потрібне вільне виведення
Смарт-контракти: уроки ескроу з The Open Guarantor
The Open Guarantor — наш бот для безпечних P2P-угод на TON. Логіка проста:
- Покупець надсилає TON в ескроу-контракт
- Контракт тримає кошти до підтвердження
- Покупець підтверджує отримання → контракт платить продавцю
- У разі спору арбітр (ми) приймає рішення
Контракти пишуться на FunC (низькорівнева мова TON) або Tact (високорівнева). Ми використовуємо Tact:
contract Escrow {
buyer: Address;
seller: Address;
arbiter: Address;
amount: Int;
state: Int; // 0 = pending, 1 = released, 2 = refunded
receive("release") {
require(sender() == self.buyer, "only buyer");
require(self.state == 0, "already settled");
send(SendParameters{
to: self.seller,
value: self.amount,
mode: SendPayGasSeparately
});
self.state = 1;
}
// ... refund, dispute logic
}
Деплой через blueprint (TON DevKit). Спочатку тестуйте на testnet, потім mainnet.
Чекліст безпеки платежів
Що ми впровадили після першого інциденту:
- Перевіряйте кожну вхідну суму — ніколи не довіряйте
valueіз транзакції без перевірки - Захист від реоргів — чекайте 6+ блоків перед зарахуванням (≈30 секунд на TON)
- Поділ hot/cold-гаманців — тримайте на гарячому гаманці лише ~24 години виплат, решту — у холодному
- Hardware-гаманець для cold — Ledger або мультисиг
- Ліміти на виведення — обмежуйте N виведень за хвилину на акаунт
- Audit trail — кожен рух коштів логується в БД із реплікацією на S3 / Postgres-репліку
Витрати на операції
Для unit-економіки:
- TON-транзакція — ~0.005 TON газу (≈$0.025 за курсом $5/TON)
- Jetton-транзакція (USDT) — ~0.05 TON (≈$0.25)
- Деплой смарт-контракту — разово ~0.1 TON
Якщо ви обробляєте 1 000 USDT-виведень на день — це ~$250/день на газ. Як скоротити:
- Батч-виведення (кілька отримувачів в одній транзакції)
- Використовуйте TON напряму замість USDT для мікросум
Що далі
TON — найпрактичніший блокчейн для Telegram-нативних продуктів у 2026. Якщо ваш продукт працює з грошима, інтеграція TON займе 2–3 тижні і миттєво дасть UX, якого класичні платіжні шлюзи не можуть досягти.
Якщо хочете побачити це в проді — подивіться The Open Earn (USDT-виплати) або The Open Guarantor (ескроу-контракти).