Saltar para o conteúdo principal
Três tarefas comuns com quatro clientes. Substitua <YOUR_KEY> pela chave de um dos seus endpoints e TXYZ… por um endereço real. Os WU nos comentários são o que o Node API cobra exatamente por essas chamadas.

Conectar

A primeira chamada lê os dados da conta — 1 WU.
O grpcurl precisa dos arquivos .proto da TRON e recebe endereços como bytes em base64 — veja gRPC.

Enviar USDT

Monte a transação pelo nó, assine-a do seu lado e transmita-a pelo nó. Sua chave privada nunca sai do seu servidor. Uma transferência custa 2 WU; com tronpy, 3 WU, mais 2 WU uma única vez para carregar o contrato. Nestes exemplos, from (sender) e to são os endereços do remetente e do destinatário, amount está na menor unidade do token (o USDT tem 6 casas decimais: 1 USDT = 1000000) e PRIVATE_KEY é a chave privada do remetente. fee_limit é o máximo de TRX, em sun, que a transferência pode queimar: 30000000 são 30 TRX.
Com curl, parameter são os argumentos de transfer(address,uint256) codificados em ABI, em hex: o endereço de 20 bytes do destinatário (sua forma hex sem o 41 inicial) completado com zeros à esquerda até 64 caracteres hex, seguido do valor, também completado até 64. O nó responde com uma transaction não assinada e o seu txID. Assine o txID com a chave privada do remetente, adicione a assinatura à transação como "signature": ["<hex>"] e envie esse objeto de transação como signed.json. Com grpcurl, call.json é uma mensagem TriggerSmartContract: owner_address, contract_address e data (o seletor de função de 4 bytes seguido dos argumentos codificados em ABI), todos como bytes em base64. A mensagem não tem campo para o limite de taxa da transação: defina raw_data.fee_limit na transação retornada e então assine o SHA-256 do novo raw_data — o txid que veio na resposta deixa de corresponder depois dessa alteração. Veja gRPC.
Reenviar a mesma transação assinada é seguro: a rede executa um ID de transação apenas uma vez, e uma transmissão repetida volta como DUP_TRANSACTION_ERROR. Uma transação que expirou precisa ser montada e assinada novamente.

Monitorar transferências USDT

Leia o cabeçalho do bloco mais recente, depois os recibos desse bloco, e fique com os de USDT. O cabeçalho custa 1 WU e os recibos de um bloco recente 2 WU — 3 WU por bloco. Acompanhar assim todos os blocos da rede custa cerca de 2.6M WU por mês.
Cada recibo de uma chamada ao USDT traz os eventos Transfer do token em log. Em um evento, topics[0] é ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, topics[1] e topics[2] são o remetente e o destinatário (os últimos 40 caracteres hex são o endereço sem o prefixo 41) e data é o valor. receipt.result é SUCCESS para uma transferência que foi concluída. O filtro acima fica com as chamadas diretas ao contrato USDT; para pegar também USDT movimentado por outros contratos, verifique em vez disso o address de cada entrada do log — a614f803b6fd780986a42c78ec9c7f77e6ded13c para o USDT.
Um novo bloco chega a cada 3 segundos, aproximadamente. Guarde o último bloco que você processou e busque os recibos de cada número depois dele, para que uma consulta lenta nunca pule um bloco. Os recibos de um bloco a mais de 20 abaixo da ponta já não são recentes e são cobrados pelo tamanho — veja Unidades de cota.