Tron 交易解码器

粘贴 raw_data_hex、完整的已签名交易,或来自 TronGrid 或 tronWeb 的 JSON。protobuf 在本地解码,计算 txID,从签名中恢复签名者,并把 TRC-20 调用转换为接收方和金额。

已签名或未签名均可。解码在你的浏览器中进行;不会向任何地方发送数据,因此即将签名的未签名交易也可以安全粘贴。
示例:

由浏览器中的 JavaScript 解码。地址不会被上传或存储。

什么是 Tron 原始交易?

Tron 原始交易是经 protobuf 序列化的 Transaction.raw 消息,TronGrid 和 tronWeb 以 raw_data_hex 的形式提供:参考区块字节和哈希、过期时间、时间戳、费用上限、可选的备注数据,以及 TransferContract 或 TriggerSmartContract 等类型化合约的列表。txID 是这些字节的 SHA-256,签名则是对同一哈希的 65 字节 secp256k1 签名。

字段说明

TRC-20 转账

Tron 上的一笔 USDT 付款是一个 TriggerSmartContract,其 contract_address 为代币合约,data 为 transfer(address,uint256)。解码器同时以原始 20 字节十六进制参数和 T… 地址的形式显示接收方,金额以原始单位显示(USDT 有 6 位小数,因此除以 1,000,000)。

解码器支持的合约类型

合约类型作用关键字段
TransferContract发送 TRXowner_address、to_address、amount(sun)
TriggerSmartContract调用合约(TRC-20 转账、授权、兑换)contract_address、data、call_value
TransferAssetContract发送 TRC-10 代币asset_name、to_address、amount
FreezeBalanceV2 / UnfreezeBalanceV2质押或解除质押 TRX 以获取能量或带宽frozen_balance、resource
DelegateResourceContract把能量或带宽出借给其他账户receiver_address、balance、resource
VoteWitnessContract为超级代表投票votes(address、count)

实例演示

一笔 USDT 付款解码为一个 TriggerSmartContract,其 contract_address 为 TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t,data 为 a9059cbb + 作为 32 字节字的接收方 + 金额。以 …0bebc200 结尾的 data 表示 200,000,000 原始单位 = 200 USDT(6 位小数)。fee_limit 为 100000000 sun 表示能量费用上限为 100 TRX,而 expiration 比 timestamp 晚 60 秒是 tronWeb 的默认值。

相关工具:Tron 地址转换器、USDT 地址验证器、Nile 批量转账。

常见问题

什么是 raw_data_hex?

Transaction.raw 的 protobuf 序列化结果:参考区块、过期时间、时间戳、费用上限和合约列表。它的 SHA-256 就是 txID,也是私钥签署的内容。tronWeb 的 transactionBuilder 会把它和 JSON 视图一起返回。

签名者是如何恢复的?

Tron 和以太坊一样使用 secp256k1。解码器用 SHA-256 对 raw_data 做哈希,从 65 字节签名中恢复公钥,再派生出 T… 地址。如果它与 owner_address 匹配,说明交易由 owner 的密钥签署;如果不匹配,则是由 active 权限的密钥(多签)签署,或者签名无效。

哪些合约类型会被解码?

TransferContract(TRX)、TriggerSmartContract(TRC-20 转账及其他调用,含 calldata 参数)、TransferAssetContract(TRC-10)、CreateSmartContract、FreezeBalanceV2 / UnfreezeBalanceV2、DelegateResource / UnDelegateResource、WithdrawExpireUnfreeze、VoteWitness、AccountCreate 和 AccountUpdate。其他类型显示其原始 protobuf 字段。

为什么 JSON 中的 txID 与计算出的不同?

它们永远不应该不同。如果不同,说明 raw_data_hex 和 JSON 中的 txID 不属于同一笔交易,这是被篡改或复制粘贴出错的迹象。解码器会标记这种情况。

为什么签名是 65 字节?

它由 r(32 字节)、s(32 字节)和恢复 ID v(1 字节)组成,与以太坊使用的布局相同。正是恢复 ID 让解码器能在交易不存储地址的情况下推导出签名者的公钥,进而得到 T… 地址。

可以在 TronLink 签名之前解码交易吗?

可以。传给 tronWeb.trx.sign 的对象包含 raw_data_hex;把整个对象粘贴进来即可。结果会准确显示你即将授权的是哪个合约调用。