Bandwidth and Energy
TRON's two metering resources — Bandwidth for transaction byte size and Energy for smart contract execution — and how to obtain each.
TRON meters on-chain operations through two system resources. Bandwidth covers the byte size of every transaction stored on-chain, so it scales with how big the transaction is. Energy covers smart contract execution, so it scales with how much computation a contract performs. Both can be obtained by staking TRX and recover continuously over a rolling 24-hour window. Bandwidth also has a per-account free quota; Energy does not.
Prerequisites
Quick comparison
| Aspect | Bandwidth | Energy |
|---|---|---|
| Pays for | Transaction byte size | Smart contract execution (TVM instructions) |
| Current network-wide limit | 43,200,000,000 Bandwidth | 180,000,000,000 Energy |
| Current free quota | 600 Bandwidth per rolling 24-hour window per account | None |
| Obtained by | Staking TRX, or receiving delegated Bandwidth from another account | Staking TRX, or receiving delegated Energy from another account |
| Recovery | 24-hour rolling cycle | 24-hour rolling cycle |
When stake plus the free quota are insufficient, TRX is burned to cover the shortfall. The burn rates and the deployer Energy sharing mechanism are covered in Paying for resources & Energy sharing.
Bandwidth
Every transaction on TRON except read-only queries consumes Bandwidth. A transaction's Bandwidth consumption equals its byte size on-chain — one byte uses one Bandwidth. The current per-account free quota is 600 Bandwidth per rolling 24-hour window. This value is controlled by chain parameter getFreeNetLimit; query wallet/getchainparameters before relying on it.
For higher throughput, accounts stake TRX for Bandwidth. The current network-wide Bandwidth limit is 43,200,000,000 and is distributed proportionally to staked balances. This value is controlled by chain parameter getTotalNetLimit; query wallet/getchainparameters before relying on it:
Bandwidth obtained
= (your TRX staked for Bandwidth / total TRX staked for Bandwidth network-wide)
× 43_200_000_000Query the network-wide total via wallet/getaccountresource.
Energy
Smart contract execution on TRON consumes Energy. Each TRON Virtual Machine (TVM) instruction has a fixed Energy cost, and a contract call's total Energy consumption equals the sum of those costs. Unlike Bandwidth, Energy has no free quota — every account that calls a smart contract must either have staked Energy in advance, receive delegated Energy, or rely on the TRX-burn fallback.
The current network-wide Energy limit is 180,000,000,000 and is distributed proportionally to stake. This value is controlled by getTotalEnergyCurrentLimit (and related adaptive-Energy parameters); query wallet/getchainparameters before relying on it:
Energy obtained
= (your TRX staked for Energy / total TRX staked for Energy network-wide)
× 180_000_000_000Staking TRX for resources
Send a FreezeBalanceV2Contract transaction to stake TRX for either resource. Build the unsigned transaction with the wallet/freezebalancev2 HTTP API:
BASE_URL=https://api.shasta.trongrid.io # example — replace with any TRON node (TronGrid, third-party, or self-hosted)
curl -X POST ${BASE_URL}/wallet/freezebalancev2 \
-H "Content-Type: application/json" \
-d '{
"owner_address": "TBRmnXKMEVfQ8XeQA2NroC9cGi77TvPbNb",
"frozen_balance": 1000000,
"resource": "BANDWIDTH",
"visible": true
}'The fields:
owner_address— the staking account, in Base58Check (visible: true) or hex.frozen_balance— amount in sun (1,000,000 sun = 1 TRX).resource—"BANDWIDTH"or"ENERGY". Set to"ENERGY"to stake for Energy instead.
The response is an unsigned transaction. Sign it with the owner's private key and broadcast via wallet/broadcasttransaction. For the end-to-end build / sign / broadcast pattern, see the Stake & Delegate Resources recipe.
Staking is reversible. To recover the underlying TRX, send UnfreezeBalanceV2Contract to start a 14-day waiting period, then WithdrawExpireUnfreezeContract to claim the unstaked TRX. For the full lifecycle, see Staking on the TRON network.
Delegating resources
An account can delegate its earned Bandwidth or Energy to another account through DelegateResourceContract. The receiving account uses the delegated resource directly without staking itself. Delegation is reversible and supports an optional lock period for added safety. CEXs and DApp operators commonly use this mechanism to absorb resource costs on behalf of their users from a single staking pool.
In practice, Energy delegation is more common than Bandwidth delegation: the current free Bandwidth quota covers many everyday transfers, while Energy has no free tier and contract calls can quickly exhaust an account's available resources.
Recovery cycle
Bandwidth usage and staked Energy usage decay over a rolling 24-hour window. If no additional resource is consumed, an amount used at one time is fully recovered after 24 hours. New consumption is combined with the unrecovered usage and recalculates the recovery schedule, so the available amount depends on the account's activity throughout the window.
Related resources
- Resource Model — Three-resource overview, including TRON Power
- Paying for resources & Energy sharing — Burn rates, charging order, deployer Energy sharing,
fee_limit, dynamic Energy - Staking on the TRON network — Stake, unstake, withdraw, delegate
wallet/getaccountresource— Query an account's Bandwidth, Energy, and TP
Updated 9 days ago