Tron の生トランザクションとは
Tron の生トランザクションは protobuf でシリアライズされた Transaction.raw メッセージで、TronGrid と tronWeb は raw_data_hex として公開しています。参照ブロックのバイトとハッシュ、expiration、timestamp、フィーリミット、任意のメモデータ、そして TransferContract や TriggerSmartContract などの型付きコントラクトのリストを含みます。txID はこのバイト列の SHA-256 で、署名は同じハッシュに対する 65 バイトの secp256k1 署名です。
フィールドの説明
- Expiration: この時刻を過ぎるとトランザクションは拒否されます(通常は作成の 60 秒後)。期限切れのトランザクションは、ブロードキャスト失敗の最も一般的な原因です。
- フィーリミット: コントラクト呼び出しのエネルギーのために消費してよい TRX の上限。通常の送金にはありません。
- Permission ID: owner 権限は 0、マルチシグ構成の active 権限は 2 以上。
- Ref block: トランザクションが紐付けられるブロック。ノードはこれを使って古いトランザクションを拒否します。
TRC-20 送金
Tron 上の USDT 支払いは、contract_address がトークンで data が transfer(address,uint256) である TriggerSmartContract です。デコーダーは受取先を生の 20 バイト hex 引数と T… アドレスの両方で表示し、金額は生の単位で表示します(USDT は 6 桁なので 1,000,000 で割ります)。
デコーダーが理解するコントラクトの種類
| コントラクトの種類 | 役割 | 主なフィールド |
|---|---|---|
| TransferContract | TRX を送る | owner_address、to_address、amount(sun) |
| TriggerSmartContract | コントラクトを呼び出す(TRC-20 の transfer、approve、スワップ) | 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 の支払いをデコードすると、contract_address が TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t で、data が a9059cbb + 32 バイトワードとしての受取先 + 金額である TriggerSmartContract になります。data が …0bebc200 で終わっていれば 200,000,000 生単位 = 200 USDT(6 桁)です。fee_limit が 100000000 sun ならエネルギーコストの上限は 100 TRX で、timestamp の 60 秒後の expiration は tronWeb のデフォルトです。