Decodificador de transacciones Tron

Pega raw_data_hex, una transacción firmada completa o el JSON de TronGrid o tronWeb. El protobuf se decodifica localmente, se calcula el txID, el firmante se recupera a partir de la firma y las llamadas TRC-20 se convierten en destinatario y cantidad.

Firmada o sin firmar. La decodificación se ejecuta en tu navegador; no se envía nada a ningún sitio, así que es segura para transacciones sin firmar que estés a punto de firmar.
Ejemplos:

Se decodifica en tu navegador con JavaScript. Las direcciones nunca se suben ni se almacenan.

¿Qué es una transacción Tron en bruto?

Una transacción Tron en bruto es el mensaje Transaction.raw serializado en protobuf, que TronGrid y tronWeb exponen como raw_data_hex: bytes y hash del bloque de referencia, expiración, timestamp, fee limit, datos de memo opcionales y una lista de contratos tipados como TransferContract o TriggerSmartContract. El txID es el SHA-256 de estos bytes, y la firma es una firma secp256k1 de 65 bytes sobre ese mismo hash.

Campos explicados

Transferencias TRC-20

Un pago en USDT en Tron es un TriggerSmartContract cuyo contract_address es el token y cuyos datos son transfer(address,uint256). El decodificador muestra el destinatario tanto como el argumento hex de 20 bytes en bruto como en forma de dirección T…, y la cantidad en unidades en bruto (USDT tiene 6 decimales, así que divide por 1.000.000).

Tipos de contrato que entiende el decodificador

Tipo de contratoQué haceCampos clave
TransferContractenviar TRXowner_address, to_address, amount (sun)
TriggerSmartContractllamar a un contrato (transferencia TRC-20, approve, swap)contract_address, data, call_value
TransferAssetContractenviar un token TRC-10asset_name, to_address, amount
FreezeBalanceV2 / UnfreezeBalanceV2poner o retirar TRX en staking para energía o ancho de bandafrozen_balance, resource
DelegateResourceContractprestar energía o ancho de banda a otra cuentareceiver_address, balance, resource
VoteWitnessContractvotar a superrepresentantesvotes (address, count)

Ejemplo práctico

Un pago en USDT se decodifica como un TriggerSmartContract cuyo contract_address es TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t y cuyos datos son a9059cbb + el destinatario como palabra de 32 bytes + la cantidad. Unos datos que terminan en …0bebc200 significan 200.000.000 unidades en bruto = 200 USDT (6 decimales). Un fee_limit de 100000000 sun limita el coste de energía a 100 TRX, y una expiration 60 segundos después del timestamp es el valor por defecto de tronWeb.

Relacionado: conversor de direcciones Tron, validador de direcciones USDT, transferencia en lote en Nile.

Preguntas frecuentes

¿Qué es raw_data_hex?

La serialización protobuf de Transaction.raw: bloque de referencia, expiración, timestamp, fee limit y la lista de contratos. Su SHA-256 es el txID, y es lo que firma la clave privada. El transactionBuilder de tronWeb lo devuelve junto a una vista JSON.

¿Cómo se recupera el firmante?

Tron usa secp256k1 como Ethereum. El decodificador calcula el SHA-256 de raw_data y recupera la clave pública a partir de la firma de 65 bytes, y luego deriva la dirección T…. Si coincide con owner_address, la transacción fue firmada por la clave del propietario; si no, fue firmada por una clave de permiso activo (multifirma) o no es válida.

¿Qué tipos de contrato se decodifican?

TransferContract (TRX), TriggerSmartContract (transferencias TRC-20 y otras llamadas, con los argumentos del calldata), TransferAssetContract (TRC-10), CreateSmartContract, FreezeBalanceV2 / UnfreezeBalanceV2, DelegateResource / UnDelegateResource, WithdrawExpireUnfreeze, VoteWitness, AccountCreate y AccountUpdate. Los demás tipos muestran sus campos protobuf en bruto.

¿Por qué el txID del JSON difiere del calculado?

Nunca debería diferir. Si lo hace, el raw_data_hex y el txID del JSON no pertenecen a la misma transacción, lo que es señal de manipulación o de un error al copiar y pegar. El decodificador lo marca.

¿Por qué la firma tiene 65 bytes?

Son r (32 bytes), s (32 bytes) y un id de recuperación v (1 byte), la misma disposición que usa Ethereum. El id de recuperación es lo que permite al decodificador derivar la clave pública del firmante, y por tanto la dirección T…, sin que la dirección esté almacenada en la transacción.

¿Puedo decodificar una transacción antes de que TronLink la firme?

Sí. El objeto que se pasa a tronWeb.trx.sign contiene raw_data_hex; pega el objeto completo. El resultado muestra exactamente qué llamada a contrato estás a punto de autorizar.