← All articles

Stake 2.0: TRON's Resource Model Explained

Part of Who Controls a TRON Wallet? A Complete Guide to TRON Address Attribution

Key takeaways

  • TRON charges in two resources instead of a single fee: Bandwidth (transaction byte size) and Energy (smart-contract execution). You buy them by staking TRX, or you burn TRX on the spot when you run short.
  • Stake 2.0 (live April 7, 2023) decoupled staking from delegation — freeze once, then lend resources to any number of recipients, change your mind without unstaking.
  • Unstaking now takes a 14-day wait before you can withdraw, and that wait is visible on-chain as a two-step pattern.
  • The standout signal for investigators: resource delegation. When address A pays for address B's transactions, that's a real, recurring economic tie — and exchanges never do it.

Most blockchains charge one native-token fee per transaction. TRON doesn’t. It meters two separate resources — Bandwidth and Energy — and you get them one of two ways: stake TRX to earn a daily allowance, or burn TRX on the spot when your allowance runs dry. The model looks odd until the economics click into place. The 2023 Stake 2.0 upgrade rewired how delegation, unstaking, and lock periods work, and the last section here connects all of it to what you can read off the chain.

TRX LIQUID Staked TRX LOCKED Energy /Bandwidth Recipient ANY ACCOUNT FREEZE MINTS DELEGATE UNSTAKE · 14-DAY WAIT · WITHDRAW
A freeze mints a renewable resource; the TRX only comes back the long way around.

Bandwidth and Energy: TRON’s two resources

What a transaction costs, and in which resource, depends on what it does.

Bandwidth pays for size. One byte of serialized transaction data costs one unit of Bandwidth, and every transaction on the network consumes some: TRX transfers, contract calls, staking operations, account activation. A bare TRX transfer is small and cheap; a contract call stuffed with parameters is larger and costs more.

Energy pays for computation. The moment a transaction runs code in the TRON Virtual Machine — a USDT transfer, a DeFi swap, any contract interaction — it burns Energy in proportion to how much work the code does. It’s TRON’s analogue to Ethereum gas, but scoped strictly to smart-contract execution. A plain TRX transfer touches no code, so it spends zero Energy.

Bandwidth TRANSACTION BYTE SIZE COVERS Every transaction (1 byte = 1 unit) DAILY POOL 43.2 billion units FREE / DAY 600 units BURN 0.001 TRX / unit Energy SMART-CONTRACT EXECUTION COVERS Contract calls only (e.g. USDT) DAILY POOL 180 billion units FREE / DAY none BURN 0.0001 TRX / unit
Two meters for two kinds of cost.

Why two resources instead of one fungible “gas”? Because they behave differently. Bandwidth is cheap and predictable; Energy is variable, tied to computational load, and dominates total transaction cost because contract calls consume it in bulk — tens of thousands of units per call — even though its per-unit price is lower: Energy burns at 0.0001 TRX per unit, Bandwidth at 0.001. Splitting them lets a high-volume contract user stake purely for Energy without subsidizing byte-heavy traffic, and vice versa.

One baseline to keep in your head: every activated account gets 600 free Bandwidth units a day, no staking required — enough to cover the occasional simple transfer. Energy gets no such free allocation, so contract calls cost from the first unit.

Why stake TRX at all

Staking buys Bandwidth and Energy in bulk, by proportion: your share of the total network stake equals your share of the daily resource pool.

  • Bandwidth pool: 43,200,000,000 units a day, split across everyone who staked for Bandwidth.
  • Energy pool: 180,000,000,000 units a day, split across everyone who staked for Energy.

Both pools refill continuously over the 24 hours after you spend them, block by block rather than in one midnight reset.

Run out mid-transaction and TRON covers the shortfall by burning TRX automatically. For someone sending the odd transfer, the free 600 Bandwidth and a trivial burn handle everything. For an address pushing dozens or hundreds of USDT transfers a day, that burn adds up until staking stops being optional and becomes the cheaper way to operate. That cost structure is what makes delegation worth watching: an address that keeps another address’s operations funded is absorbing a real, recurring expense.

Stake 1.0 vs Stake 2.0

The original mechanism — call it Stake 1.0, built on FreezeBalanceContract — had a design knot: staking and resource type were welded together. Freezing TRX meant declaring up front whether you wanted Bandwidth or Energy. Switching meant unfreezing (a 3-day lock), then re-freezing for the other type. And delegation was all-or-nothing: you could hand a stake’s resources to one recipient, in full, with no partial amounts.

Stake 1.0 FREEZEBALANCECONTRACT Stake + resource type coupled One recipient per stake No partial unstaking Re-stake to change recipient 3-day unfreeze lock Stake 2.0 FREEZEBALANCEV2CONTRACT Stake and delegation independent Delegate to many recipients Partial unstaking supported Re-delegate without unstaking 14-day unstake wait · up to 32 concurrent
Stake 2.0 cut the cord between staking and delegation.

Stake 2.0 — FreezeBalanceV2Contract and UnfreezeBalanceV2Contract from TIP-467 — pulled those threads apart:

A compatibility note for old wallets: the upgrade didn’t invalidate Stake 1.0 positions — resources and votes earned under 1.0 stayed valid past April 7, 2023. But the old delegation model, the one that needed re-staking to change recipients, couldn’t carry forward. Only Stake-2.0 TRX can be delegated under the new rules.

The four TIPs behind it

Stake 2.0 didn’t land in a single commit. It arrived as a sequence of proposals over eight months, each one adding a piece, and knowing which is which helps you date what you find on-chain.

TIP-467 — Stake 2.0 design (proposed September 28, 2022; Final). The core spec: the split between staking and delegation, partial unstaking, multi-recipient delegation, and the N-day unstaking window (N being a governance parameter). It also defined six new TVM opcodes — FREEZEBALANCEV2, UNFREEZEBALANCEV2, DELEGATERESOURCE, UNDELEGATERESOURCE, CANCELALLUNFREEZEV2, WITHDRAWEXPIREUNFREEZE — plus their HTTP APIs, letting smart contracts touch the staking system directly for the first time.

TIP-519 — Enable Stake 2.0 (Final). The on-chain governance proposal that flipped the switch on mainnet. It set two parameters at once: No. 59 (ALLOW_TVM_VOTE, to 1) enabling contract-level voting, and No. 70 (UNFREEZE_DELAY_DAYS, to 14) establishing the 14-day window. Created April 4, 2023; effective April 7, 2023 — the live date for Stake 2.0.

TIP-541 — Cancel unstaking (created May 5, 2023; Final). Added the wallet/cancelallunfreezev2 API, which cancels all in-progress unstaking during the 14-day wait. Before it, hitting unstake was a one-way door — change your mind and you waited out the full 14 days. Cancelling puts the TRX back to staked and resumes resource and vote accrual. It’s purely additive and touches nothing already in flight.

TIP-542 — Customizable delegation lock period (created May 12, 2023; Final). Added a lock_period parameter (in blocks) to wallet/delegateresource. Stake 2.0 had shipped with a boolean lock flag — set it and the delegation couldn’t be undelegated for a fixed 3 days; TIP-542 swapped that fixed term for a count the delegator sets at delegation time — which lets two parties write a resource-leasing agreement straight into the chain. Leave lock true and lock_period at 0 and you get the old 86,400-block (3-day) default.

Delegation: when A funds B’s resources

When A stakes TRX and delegates Energy or Bandwidth to B, B transacts as if it had staked itself — the consumption draws on A’s allowance, and the cost lands on A. B pays nothing and never needs to hold staked TRX. The mechanics are that simple, and they are where the model earns its keep for an investigator. A few constraints frame it:

  • Only Stake-2.0 resources can be delegated; Stake 1.0 positions are ineligible.
  • Only unused resources can be delegated — not the slice A is already spending on its own transactions.
  • A can delegate to multiple recipients, in different amounts, independently.
  • It shows up on-chain as DelegateResourceContract; undelegation as UnDelegateResourceContract. Both are attributable to the delegating address.

Now consider who actually does this. Exchanges serve millions of users out of shared custody wallets, so per-user delegation is economically absurd at that scale — they don’t delegate Energy or Bandwidth to individual accounts. The addresses that do delegate have a specific reason to fund one particular wallet: a controller subsidizing a receiving address, a business covering a counterparty, an operator keeping a field wallet alive.

You are not paying a fee. You are pledging capital to borrow throughput.

A steady delegation relationship — A delegating to B again and again, with B’s transactions spending that resource — is a durable economic tie. A carries B’s cost, and the act is attributable to A. Every re-delegation puts a fresh event on the record.

The 14-day unstaking window

Network parameter No. 70, UNFREEZE_DELAY_DAYS, sets the wait. It’s a governance value — Super Representatives could change it by proposal — but it has held at 14 since launch.

Start unstake UNFREEZEBALANCEV2 14-day window NOT STAKED · NOT LIQUID Claim TRX WITHDRAWEXPIREUNFREEZE WAIT AFTER 14 D CANCEL UNSTAKE · CANCELALLUNFREEZEV2 · TIP-541
Unstaking is a two-step move with a cancel branch in the middle.

On-chain it starts when the staker broadcasts UnfreezeBalanceV2Contract with the amount and resource type; the TRX leaves the staked balance the moment that lands. Then it sits in limbo for 14 days, neither staked nor liquid, and that window is the only stretch where TIP-541’s cancel can reverse the whole thing. When the window closes, WithdrawExpireUnfreezeContract pulls the TRX back to the liquid balance — the on-chain proof the unstake finished.

The April 7, 2023 boundary matters when reading history. Before it, unstaking used UnfreezeBalanceContract (Stake 1.0) with a 3-day lock and no separate intermediate transaction; after it, the two-step pattern is standard. Across the upgrade, the contract types tell you which era you’re in. One Stake 1.0 quirk has no modern equivalent: unstaking under the old model revoked all of an account’s votes at once, whatever resource you pulled. Stake 2.0 removes only the votes backed by the specific TRX unstaked — keep that in mind when vote weight jumps in a wallet that lived through the transition.

What this means for investigators

Pull all of this back to the work of tracing a wallet and a few signals stand out.

Delegation is an ownership signal. A DelegateResourceContract is a deliberate act — the sender chose to fund a specific recipient’s transactions. A recurring delegation from the same source to the same target, especially Energy covering USDT calls, is among the strongest candidate-ownership indicators on TRON.

Fueling rounds out the picture. Some wallets skip delegation and fund others with small TRX transfers sized to cover the fallback burn. Spot the address that tops up a wallet just before its high-value USDT moves and you’re looking at the same thing — operational control. The dedicated treatment lives at Who Pays the Fees?.

Contract types also date the activity, and the completed ones say the most. FreezeBalanceContract puts activity before April 2023; FreezeBalanceV2Contract puts it after — which matters when you read delegation events and vote-weight changes across the boundary. A WithdrawExpireUnfreezeContract carries its own tell: someone kicked off an unstake and came back 14 days later to claim it, where a wallet abandoned or handed off mid-window rarely finishes the sequence cleanly. And a large unstake right before a big outbound transfer can mark deliberate liquidity staging — the unstake is the setup, and the 14-day gap sits right there in the record.

How to weigh these patterns together when judging who funded and likely owns a wallet is covered alongside the fueling write-up linked above.

Sources

Primary documentation and data sources used for the facts in this article: