TRON's fee model, and why stake exists. Units first: 1 TRX = 1,000,000 SUN; all CLI amounts named *-sun and all JSON amounts are raw SUN strings.
| Resource | Consumed by | Free allowance |
|---|---|---|
| Bandwidth | every transaction's bytes | small daily per-account quota |
| Energy | smart-contract execution (TRC20 transfers included) | none |
When a transaction needs more than you have, the node burns TRX from your balance to cover the difference. For contract calls, --fee-limit (on tx send / contract commands, default 100000000 SUN) caps that burn — a safety valve against a buggy or hostile contract consuming unbounded energy.
Check your standing anytime:
wallet-cli account info --network tron:nile -o json | jq '.data.resources'{ "bandwidth": { "used": 0, "limit": 600 }, "energy": { "used": 0, "limit": 888 } }Staking locks TRX (it remains yours) in exchange for a continuous resource quota plus TRON Power (governance votes). The stake command group maps 1:1 onto the chain operations:
| Command | Chain operation | Effect |
|---|---|---|
stake freeze |
FreezeBalanceV2 | Lock TRX for --resource energy|bandwidth |
stake unfreeze |
UnfreezeBalanceV2 | Request unlock; resources drop immediately, TRX enters a waiting period (14 days on mainnet) |
stake withdraw |
WithdrawExpireUnfreeze | Claim unstakes whose waiting period has expired |
stake cancel-unfreeze |
CancelAllUnfreezeV2 | Roll all pending unstakes back to staked |
stake delegate |
DelegateResourceV2 | Lend resource quota to --receiver (optionally --lock for --lock-period blocks, ~3 s/block) |
stake undelegate |
UnDelegateResourceV2 | Reclaim a delegation |
Delegation moves the resource quota, never the TRX — the stake stays on the owner's account. A common setup: a cold account holds the stake and delegates energy to a hot account that does the transacting.
- A "free" TRX transfer isn't always free: past the bandwidth quota, it burns TRX.
- A TRC20 transfer with zero energy burns noticeably more — check
--dry-run'sfeeblock before complaining about balances. rpc_errormentioning bandwidth/energy/balance during send → fund, stake, or wait for the daily quota; see Troubleshooting.