A liquid staking token has two prices. The exchange rate is what the protocol’s own books say one token is worth in ETH. It rises as staking rewards arrive. The market rate is what a pool pays for the token right now. The gap between the two is the price of leaving immediately instead of waiting for the protocol to pay out.
A liquid staking token is an ERC-20 that represents a claim on staked ETH plus the rewards it earns, so a holder keeps a tradable position while the ETH stays staked. That design creates the two prices. One is a bookkeeping value that a contract or a reporting process produces. The other is a trade that a buyer is willing to make. This article covers how each exchange rate is set, why the market rate can sit below it, what the gap looked like in June 2022 and which price a lender, a perpetuals venue or a treasury can read for which job.
Where the exchange rate comes from
An exchange rate is not a market price. It is computed from the protocol’s accounts. It changes in steps rather than continuously. Each protocol does it differently.
rETH
Rocket Pool’s token contract divides the ETH balance the network reports by the rETH supply. Its getExchangeRate() function returns ETH per rETH, a number that rises as rewards arrive. The balance comes from trusted Oracle DAO nodes: an update needs consensus among them. The contract also enforces a minimum time between reports.
Rocket Pool’s documentation says the rate updates about every 24 hours, based on the Beacon Chain rewards its node operators earn. Reading the contract across a week in October 2026 showed the same pattern: one step a day, with the value flat in between.
cbETH
cbETH is built on Coinbase’s wrapped staked token contracts, which set the rate off-chain. The contract has an oracle role that can set the exchange rate through updateExchangeRate(uint256). The repository also describes a separate rate-limited updater contract that checks each update against an allowance. Anyone can read the result with exchangeRate(), which returns ETH per cbETH.
The repository’s README expects frequent updates. In the days we sampled in October 2026 the value changed once a day and held still otherwise. Treat that as an observation, not as a published schedule.
stETH and wstETH
stETH takes the other route: the holder’s balance grows with each oracle report instead of the token’s rate rising. Lido’s documentation says rebases normally happen daily, when its oracle reports the Consensus Layer balance. A report frame lasts 225 epochs, which is 24 hours. It starts around noon UTC.
wstETH keeps its balance fixed and its value in stETH rises. stEthPerToken() returns that value and steps at the same daily rebase. How the two representations differ and what goes wrong when a system mixes them up are the subject of stETH vs wstETH.
Each protocol runs its own schedule, so two exchange rates read at the same moment can sit at different points of their daily cycles. All three reads are plain contract calls, with no trade data involved.
Why the market rate can differ
The exchange rate says what a token redeems for. It does not say when. Ethereum enabled staking withdrawals with the Shapella upgrade on 12 April 2023. Exiting is still not instant:
- A full exit means the validator leaves the active set and the funds are then swept to the withdrawal address. How long that takes depends on how many validators exit at once. The consensus rules also limit exits per epoch.
- Lido serves withdrawals from a queue in order of request. A holder requests a withdrawal with stETH or wstETH. The accounting oracle report finalizes a batch of requests. Once a request is finalized, the holder can claim it.
- Rocket Pool lets a holder burn rETH for ETH directly while the staking pool holds enough ETH to cover the trade. Otherwise the route is to sell on an exchange.
Lido’s help center, in an article last updated in April 2024, described a wait of one to five days under normal circumstances. It listed the amount of stETH in the queue, bunker mode, the Beacon Chain exit queue and staking demand as the factors behind it.
A holder who needs ETH today can wait or sell the token in a pool. The buyer in the pool takes over the wait and the chance that something changes before payout, so the buyer wants paying for that. The pool price is the exchange rate minus that payment. Lido’s integration guide says the same in its own terms: holders risk a market price below the token’s inherent value because of withdrawal restrictions. It also says redemption by burning stETH keeps the 1:1 ratio except in rare cases.
When exits are quick and the pools are liquid, the two prices sit close together. The gap widens when waiting costs more or when sellers outnumber buyers.
June 2022: the gap as a dated case
Before Shapella, staked ETH could not be withdrawn at all. After the collapse of Terra in May 2022, holders who wanted ETH could get it only by selling the token. CoinDesk, in a report carried by Fortune on 17 June 2022, wrote that some large holders sold their stETH for ETH, mostly through the Curve pool.
We read that pool’s quote for selling one stETH, with its get_dy function on archive state. At block 14955880, on 13 June 2022, it returned 0.935006 ETH, about 6.5 percent below one ETH. A later read, at block 14986812 on 18 June 2022, returned 0.9311 ETH, about 6.9 percent below. It is one pool and a one-token trade, so the true trough may lie between the samples.
The protocol’s position, as Forklog reported it on 15 June 2022, was that stETH would be redeemable for the deposited ETH and accrued rewards once withdrawals were enabled, independent of the secondary market rate. Both statements held together: the exchange rate stayed a claim on ETH while the market rate priced the wait.
The gap also did not close on the day withdrawals opened. The same quote read 0.9974 ETH on 6 April 2023, six days before Shapella, so most of the gap had already narrowed over the preceding months.
What moves the gap
Every driver below acts on the cost or length of waiting, or on how many buyers stand ready to take it:
- The length of the exit queue. More stETH waiting means a longer wait. Lido’s help article names the amount in the queue as a factor.
- Validator exits. The Beacon Chain exit path is rate limited per epoch, so a large number of simultaneous exits stretches the wait for everyone.
- Pool liquidity and who is selling. In June 2022 large holders sold into one pool. Rocket Pool’s documentation ties direct redemption to the pool’s balance, which is the same dependence in another form.
- Protocol-side events. Lido lists bunker mode among the factors behind its wait and says 1:1 redemption has rare exceptions.
- Risk events. The Terra collapse is the example above: holders wanted ETH while the exit was closed.
None of these is a constant, so the gap moves with them.
Which price to read for which job
A lender sells collateral when it liquidates a position, so the proceeds come at the market rate. Valuing collateral at the exchange rate in a stressed week overstates what a liquidation returns. The exchange rate still answers a different question, how much ETH one unit of collateral represents. It holds still between reports, so a reading taken hours after the last step is still the previous step.
A perpetuals venue needs a mark and a settlement price that someone could trade at now. That is the market rate. An exchange rate that steps once a day, set by a reporting process, would sit still while the market moves.
A treasury can use both for different decisions. The exchange rate shows how much claim the holding has accrued. The market rate shows what leaving today would produce. The spread between them is the cost of exiting now. A treasury that can wait out the exit path leans on the exchange rate. One that may need ETH on a particular day leans on the market rate.
Read together, the two numbers carry a signal neither gives alone. A flat exchange rate with a falling market rate can point at exit demand running ahead of liquidity. Because the exchange rate comes from a reporting process, a risk model can store the time of the last update next to the value.
Reading both on ML Data
ML Data prices the market rate: what the pools pay for the token, resolved to dollars. The feed pages for rETH, cbETH and stETH show it. The liquid staking token price board lists the tokens together. The ETH ratio board puts each against ETH and labels it rebasing or accruing. The exchange rate stays with the protocol, readable on chain with the functions above.
How a pool state becomes a price is covered in DEX-native price feeds, explained.
Sources
- Rocket Pool Docs, Liquid Staking overview
- Rocket Pool, RocketTokenRETH.sol
- Rocket Pool, RocketNetworkBalances.sol
- Coinbase, wrapped-tokens-os README
- Lido Docs, Lido Tokens Integration Guide
- Lido Docs, AccountingOracle
- Lido Docs, wstETH
- Lido Docs, WithdrawalQueueERC721
- Lido Help, How long does an Ethereum withdrawal take?
- ethereum.org, Timeline of all Ethereum forks
- ethereum.org, Staking withdrawals
- ethereum.org, Liquid and pooled staking
- Ethereum consensus specs, Electra beacon chain
- Fortune (CoinDesk), Trading pool where investors dump stETH tokens is drying up
- Forklog, Lido says it will continue operating amid continued stETH discount