Skip to content

Energy and Bandwidth

TRON's fee model, and why stake exists. TRON only — EVM networks price transactions in gas instead; see Networks → the evm-gas model. Units first: 1 TRX = 1,000,000 SUN; every CLI flag named *-sun takes raw SUN. JSON reports raw SUN too, but not always as a string: balances and other int64-sized amounts are decimal strings, while bounded counters and fees such as feeSun, multiSignFeeSun, energyUsed and netUsed may come back as JSON numbers. Follow each command's field table rather than assuming one type — see machine-interface.

Two resources instead of gas

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:3448148188 -o json | jq '.data.resources'
{ "bandwidth": { "used": 0, "limit": 600 }, "energy": { "used": 0, "limit": 888 } }

How you obtain resources: staking

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.

Practical consequences

  • 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's fee block before complaining about balances.
  • rpc_error mentioning bandwidth/energy/balance during send → fund, stake, or wait for the daily quota; see Troubleshooting.

See also

Staking walkthrough · Networks · account info