Tron トランザクションデコーダー

raw_data_hex、署名済みトランザクション全体、または TronGrid や tronWeb の JSON を貼り付けてください。protobuf はローカルでデコードされ、txID が計算され、署名者が署名から復元され、TRC-20 の呼び出しは受取先と金額に変換されます。

署名済みでも未署名でも構いません。デコードはブラウザ内で実行され、どこにも送信されないため、これから署名する未署名トランザクションでも安全です。
例:

ブラウザ内で JavaScript によりデコードされます。アドレスがアップロードまたは保存されることはありません。

Tron の生トランザクションとは

Tron の生トランザクションは protobuf でシリアライズされた Transaction.raw メッセージで、TronGrid と tronWeb は raw_data_hex として公開しています。参照ブロックのバイトとハッシュ、expiration、timestamp、フィーリミット、任意のメモデータ、そして TransferContract や TriggerSmartContract などの型付きコントラクトのリストを含みます。txID はこのバイト列の SHA-256 で、署名は同じハッシュに対する 65 バイトの secp256k1 署名です。

フィールドの説明

TRC-20 送金

Tron 上の USDT 支払いは、contract_address がトークンで data が transfer(address,uint256) である TriggerSmartContract です。デコーダーは受取先を生の 20 バイト hex 引数と T… アドレスの両方で表示し、金額は生の単位で表示します(USDT は 6 桁なので 1,000,000 で割ります)。

デコーダーが理解するコントラクトの種類

コントラクトの種類役割主なフィールド
TransferContractTRX を送るowner_address、to_address、amount(sun)
TriggerSmartContractコントラクトを呼び出す(TRC-20 の transfer、approve、スワップ)contract_address、data、call_value
TransferAssetContractTRC-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 のデフォルトです。

関連: Tron アドレスコンバーター、USDT アドレスバリデーター、Nile 一括送金。

よくある質問

raw_data_hex とは何ですか?

Transaction.raw の protobuf シリアライズです: 参照ブロック、expiration、timestamp、フィーリミット、コントラクトのリスト。その SHA-256 が txID で、秘密鍵が署名する対象です。tronWeb の transactionBuilder は JSON ビューと一緒にこれを返します。

署名者はどうやって復元されますか?

Tron は Ethereum と同じ secp256k1 を使います。デコーダーは raw_data を SHA-256 でハッシュし、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 と計算された txID が異なるのはなぜですか?

本来異なることはありません。異なる場合、raw_data_hex と JSON 内の txID が同じトランザクションのものではないということで、改ざんかコピー&ペーストのミスの兆候です。デコーダーはこれをフラグ表示します。

署名が 65 バイトなのはなぜですか?

r(32 バイト)、s(32 バイト)、リカバリー ID の v(1 バイト)で、Ethereum と同じレイアウトです。リカバリー ID のおかげで、デコーダーはアドレスがトランザクションに保存されていなくても署名者の公開鍵、ひいては T… アドレスを導出できます。

TronLink が署名する前にトランザクションをデコードできますか?

はい。tronWeb.trx.sign に渡されるオブジェクトには raw_data_hex が含まれているので、オブジェクト全体を貼り付けてください。結果には、これから承認しようとしているコントラクト呼び出しが正確に表示されます。