TON Blockchain para desenvolvedores: Stars, USDT, TonConnect e pagamentos no Telegram
Análise técnica aprofundada da integração de TON em Telegram Mini Apps a partir da experiência da The Open Squad. Arquitetura, TonConnect, Jettons (USDT), Telegram Stars, contratos de escrow, segurança.
Em 2026, TON Blockchain não é a "cripto dos fãs do Telegram" — é a camada de infraestrutura de toda a stack de pagamentos do mensageiro. Na The Open Squad integramos TON em todos os produtos: pagamentos em USDT no The Open Earn, contratos de escrow no The Open Guarantor. Este guia é o que aprendemos pelo caminho.
Por que TON para produtos Telegram
Alternativas:
- Stripe / PayPal — lentos, caros (3–5%), não funcionam para usuários nos 50+ países que atendemos
- Carteiras cripto multi-chain — pesadelo de UX: o usuário precisa conhecer redes, endereços, gas
- Saldo interno sem saque — usuários não confiam
TON resolve três problemas de uma vez:
- Taxas baixas — frações de centavo por transação (vs $0.30+ no Stripe)
- Velocidade — finalidade em 5 segundos
- UX — TonConnect permite vincular uma carteira em dois toques, sem copiar endereços
Arquitetura do TON em dois minutos
TON é uma blockchain PoS sharded. A unidade nativa é o TON. Em cima rodam:
- Jettons — padrão de tokens (o equivalente de ERC-20 no TON). USDT no TON é um Jetton emitido pela Tether
- NFTs — padrão de tokens únicos
- Workchains / Shardchains — shards para escalabilidade
Para os desenvolvedores isso significa:
- Um único SDK (
@ton/ton,@ton/core) lida com TON e Jettons - Sem malabarismos multi-chain
- Uma transação é uma mensagem de um contrato para outro (tudo é contrato, inclusive as carteiras)
Conectar uma carteira via TonConnect
TonConnect é um protocolo open-source que liga um dApp à carteira do usuário. Todas as carteiras TON principais o suportam: Tonkeeper, MyTonWallet, Tonhub.
Em uma Mini App fica assim:
import { TonConnectUI } from "@tonconnect/ui";
const tonConnectUI = new TonConnectUI({
manifestUrl: "https://yourapp.com/tonconnect-manifest.json",
});
// Abrir o modal de seleção de carteira
await tonConnectUI.openModal();
// Após a conexão — info da carteira disponível:
const wallet = tonConnectUI.wallet;
console.log(wallet?.account.address);
O manifest (tonconnect-manifest.json) é um JSON estático com os metadados do seu app. As carteiras o leem para mostrar seu ícone e nome na tela de consentimento.
Receber pagamentos: TON e USDT
Cenário 1: receber TON. Gere um endereço de depósito por usuário (via subconta HD-wallet). Escute novas transações por meio de uma 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)
Cenário 2: receber USDT (Jetton). USDT é um contrato Jetton. Cada destinatário tem sua própria Jetton wallet (um endereço separado da sua carteira TON principal). Você escuta as transações na Jetton wallet, não na principal.
O caminho mais simples: use uma TON Index API hospedada (Tonapi.io, TonCenter) com webhooks para transferências recebidas.
Telegram Stars: a moeda digital do Telegram
Stars são a moeda virtual do Telegram (1 Star ≈ $0.013). Usadas para comprar bens digitais: assinaturas, emojis personalizados, temas, recursos premium de bots.
Diferente de TON, Stars não podem ser sacadas livremente — o Telegram converte Stars em TON apenas para criadores verificados e com atraso.
Quando usar Stars em vez de TON:
- Conteúdo pago (artigos, cursos, recursos premium de bots)
- Compras in-app (stickers, temas)
- Gorjetas e doações
- Conformidade com App Store / Play Store (Apple e Google exigem Stars para compras digitais in-app)
Quando TON direto é melhor:
- Pagamentos B2B
- Escrow P2P
- Valores maiores
- Quando os usuários precisam de saque livre
Smart contracts: lições de escrow do The Open Guarantor
The Open Guarantor é nosso bot para deals P2P seguros em TON. A lógica é simples:
- Comprador envia TON ao contrato de escrow
- O contrato segura os fundos até a confirmação
- Comprador confirma o recebimento → contrato paga o vendedor
- Em disputa, um árbitro (nós) decide
Contratos são escritos em FunC (linguagem de baixo nível do TON) ou Tact (alto nível). Usamos 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
}
Faça deploy com blueprint (TON DevKit). Teste primeiro em testnet, depois em mainnet.
Checklist de segurança de pagamentos
O que implementamos depois do nosso primeiro incidente:
- Valide cada valor recebido — nunca confie no
valuede uma transação sem verificar - Proteção contra reorgs — espere 6+ blocos antes de creditar (≈30 segundos no TON)
- Separação hot/cold wallet — mantenha apenas ~24 horas de pagamentos na hot wallet, o resto na cold
- Hardware wallet para a cold — Ledger ou multisig
- Limites de taxa de saque — limite N saques por minuto por conta
- Audit trail — toda movimentação de fundos logada no banco com replicação para S3 / réplica Postgres
Custos de operação
Para a unit economics:
- Transação TON — ~0,005 TON de gas (≈$0.025 a $5/TON)
- Transação Jetton (USDT) — ~0,05 TON (≈$0.25)
- Deploy de smart contract — único ~0,1 TON
Se você processa 1.000 saques USDT por dia, são ~$250/dia em gas. Para reduzir:
- Agrupe saques (vários destinatários em uma transação)
- Use TON direto em vez de USDT para microvalores
O que vem a seguir
TON é a blockchain mais prática para produtos Telegram-native em 2026. Se seu produto toca em dinheiro, uma integração TON leva 2–3 semanas e instantaneamente entrega uma UX que gateways de pagamento clássicos não conseguem igualar.
Se quiser ver isso rodando em produção — confira o The Open Earn (pagamentos USDT) ou o The Open Guarantor (contratos de escrow).