Contract architecture
Tron uses EVM-compatible smart contracts for atomic swaps. The implementation is identical to the EVM guide, but currently only supports TRC20 tokens (native TRX is not supported yet).
Core functions
Initiate
The initiate function creates a new HTLC by locking TRC20 tokens in the contract:Basic initiation
Initiation on behalf
Signature-based initiation
Uses EIP712 signatures for off-chain authorization, enabling gasless transactions where authorized third parties can initiate swaps on behalf of users.
Redeem
The redeem function allows the redeemer to claim the locked TRC20 tokens by providing the secret that hashes to the stored secret hash.The secret must hash to the exact value stored during initiation using SHA256. Once revealed, this secret enables the counterparty to claim funds on the other chain. No signature required - anyone can execute if they know the secret.
Refund
The refund function allows the initiator to reclaim their TRC20 tokens after the timelock has expired and the redeemer has not claimed the funds.Uses absolute block numbers for timelock, which provides predictable settlement windows based on consistent block production times.
Instant refund
The instant refund function provides a way for the redeemer to consent to canceling the swap before the timelock expires using EIP712 signatures.This requires the redeemer’s EIP712 signature to prevent unauthorized instant refunds. This ensures mutual consent before the settlement window expires.
Tron-specific features
Order state management
The contract uses a struct to store swap state:Token handling
TRC20 implementation:- Uses SafeERC20 for secure token transfers.
- Requires token approval before initiation.
- Transfers tokens via
transferFromandtransfer.
EIP712 signature support
The contract implements EIP712 for secure off-chain message signing:Event logging
The contract emits events for each state transition to enable efficient off-chain monitoring:Order ID generation
Unique order identifiers are generated using SHA256 hashing with chain-specific parameters:Chain ID inclusion prevents cross-chain replay attacks, while the parameter combination ensures each order is uniquely identifiable across the network.