Tron 원시 트랜잭션이란 무엇인가요?
Tron 원시 트랜잭션은 protobuf로 직렬화된 Transaction.raw 메시지로, TronGrid와 tronWeb은 이를 raw_data_hex로 제공합니다. 참조 블록 바이트와 해시, expiration, timestamp, fee limit, 선택적 memo 데이터, 그리고 TransferContract나 TriggerSmartContract 같은 typed 컨트랙트 목록이 들어 있습니다. txID는 이 바이트들의 SHA-256이며, 서명은 같은 해시에 대한 65바이트 secp256k1 서명입니다.
필드 설명
- Expiration: 이 시각 이후 트랜잭션은 거부됩니다(보통 생성 후 60초). 만료된 트랜잭션은 브로드캐스트 실패의 가장 흔한 원인입니다.
- Fee limit: 컨트랙트 호출 시 에너지로 소각될 수 있는 최대 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, swap) | 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 | 슈퍼 대표(SR) 투표 | 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 일괄 전송.