Что такое сырая транзакция Tron?
Сырая транзакция Tron — это protobuf-сериализованное сообщение Transaction.raw, которое TronGrid и tronWeb предоставляют как raw_data_hex: байты и хеш опорного блока, expiration, timestamp, лимит комиссии, необязательные данные memo и список типизированных контрактов, таких как TransferContract или TriggerSmartContract. TxID — это SHA-256 этих байт, а подпись — 65-байтная подпись secp256k1 над тем же хешем.
Пояснение полей
- Expiration: после этого времени транзакция отклоняется (обычно через 60 секунд после создания). Истёкшая транзакция — самая частая причина неудачной отправки.
- Лимит комиссии: максимум TRX, который может быть сожжён на energy при вызове контракта; у простых переводов отсутствует.
- Permission ID: 0 для разрешения владельца, 2 и выше для активных разрешений в мультиподписных схемах.
- Ref block: блок, к которому привязана транзакция; узлы используют его, чтобы отклонять устаревшие транзакции.
Переводы TRC-20
Платёж USDT в Tron — это TriggerSmartContract, у которого contract_address — это токен, а data — transfer(address,uint256). Декодер показывает получателя и как сырой 20-байтный hex-аргумент, и как адрес T…, а сумму — в сырых единицах (у USDT 6 знаков, поэтому делите на 1 000 000).
Типы контрактов, которые понимает декодер
| Тип контракта | Что делает | Ключевые поля |
|---|---|---|
| TransferContract | отправка TRX | owner_address, to_address, amount (sun) |
| TriggerSmartContract | вызов контракта (перевод TRC-20, approve, своп) | contract_address, data, call_value |
| TransferAssetContract | отправка токена TRC-10 | asset_name, to_address, amount |
| FreezeBalanceV2 / UnfreezeBalanceV2 | стейкинг или анстейкинг TRX ради energy или bandwidth | frozen_balance, resource |
| DelegateResourceContract | передача energy или bandwidth другому аккаунту | receiver_address, balance, resource |
| VoteWitnessContract | голосование за суперпредставителей | votes (address, count) |
Наглядный пример
Платёж USDT декодируется в TriggerSmartContract, у которого contract_address — TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t, а data — a9059cbb + получатель как 32-байтное слово + сумма. Данные, заканчивающиеся на …0bebc200, означают 200 000 000 сырых единиц = 200 USDT (6 знаков). fee_limit в 100000000 sun ограничивает стоимость energy 100 TRX, а expiration через 60 секунд после timestamp — значение tronWeb по умолчанию.
См. также: конвертер Tron-адресов, валидатор USDT-адресов, пакетный перевод в Nile.