Saltar al contenido principal
Tres tareas habituales con cuatro clientes. Sustituye <YOUR_KEY> por la clave de uno de tus endpoints y TXYZ… por una dirección real. Los WU de los comentarios son lo que Node API cobra exactamente por estas llamadas.

Conectar

La primera llamada lee los datos de la cuenta — 1 WU.
grpcurl necesita los archivos .proto de TRON y recibe las direcciones como bytes en base64 — consulta gRPC.

Enviar USDT

Construye la transacción a través del nodo, fírmala de tu lado y transmítela a través del nodo. Tu clave privada nunca sale de tu servidor. Una transferencia cuesta 2 WU; con tronpy, 3 WU, más 2 WU una sola vez para cargar el contrato. En estos ejemplos, from (sender) y to son las direcciones del remitente y del destinatario, amount está en la unidad mínima del token (USDT tiene 6 decimales: 1 USDT = 1000000) y PRIVATE_KEY es la clave privada del remitente. fee_limit es el máximo de TRX, en sun, que la transferencia puede quemar: 30000000 son 30 TRX.
Con curl, parameter son los argumentos de transfer(address,uint256) codificados en ABI, en hex: la dirección de 20 bytes del destinatario (su forma hex sin el 41 inicial) rellenada con ceros a la izquierda hasta 64 caracteres hex, y después el importe, también rellenado hasta 64. El nodo responde con una transaction sin firmar y su txID. Firma txID con la clave privada del remitente, añade la firma a la transacción como "signature": ["<hex>"] y envía ese objeto de transacción como signed.json. Con grpcurl, call.json es un mensaje TriggerSmartContract: owner_address, contract_address y data (el selector de función de 4 bytes seguido de los argumentos codificados en ABI), todos como bytes en base64. El mensaje no tiene campo de límite de comisión: fija raw_data.fee_limit en la transacción devuelta y luego firma el SHA-256 del nuevo raw_data — el txid devuelto deja de coincidir tras ese cambio. Consulta gRPC.
Reenviar la misma transacción firmada es seguro: la red ejecuta un ID de transacción una sola vez, y una transmisión repetida vuelve como DUP_TRANSACTION_ERROR. Una transacción que ha expirado debe construirse y firmarse de nuevo.

Seguir transferencias USDT

Lee el encabezado del bloque más reciente, luego los recibos de ese bloque, y quédate con los de USDT. El encabezado cuesta 1 WU y los recibos de un bloque reciente 2 WU — 3 WU por bloque. Seguir así cada bloque de la cadena supone unos 2.6M WU al mes.
Cada recibo de una llamada a USDT lleva los eventos Transfer del token en log. En un evento, topics[0] es ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef, topics[1] y topics[2] son el remitente y el destinatario (los últimos 40 caracteres hex son la dirección sin su prefijo 41) y data es el importe. receipt.result es SUCCESS en una transferencia que se completó. El filtro de arriba conserva las llamadas directas al contrato USDT; para captar también los USDT que mueven otros contratos, comprueba en su lugar la address de cada entrada del log — a614f803b6fd780986a42c78ec9c7f77e6ded13c para USDT.
Llega un bloque nuevo aproximadamente cada 3 segundos. Recuerda el último bloque que procesaste y pide los recibos de cada número posterior, para que un sondeo lento nunca se salte un bloque. Los recibos de un bloque a más de 20 por debajo de la cabeza ya no son recientes y se cobran según su tamaño — consulta Unidades de cuota.