Lido finance is a Liquid Staking Protocol With unstETH Queue-Based Withdrawals
Lido finance is an Ethereum position lifecycle that starts when a wallet deposits ETH and receives rebasing stETH, continues through transfers or a wstETH wrap and closes when an unstETH request finalizes and the holder claims ETH. Each token records a different stage, so reading the right balance matters.
In short: It is an Ethereum liquid-staking protocol where users deposit ETH for stETH, track its rebasing balance, adjust the position, and claim ETH after an unstETH request finalizes.
One ETH deposit preserves liquidity through stETH
One Ethereum transaction creates the stETH position for a holder who wants staking exposure without operating a validator.
In Lido finance, the wallet must use Ethereum mainnet with chain ID 1 and hold ETH for the deposit plus execution gas. Lido accepts native ETH, so no ERC-20 allowance precedes this entry action. At the protocol entry rate, 1 ETH mints 1 stETH before share rounding. stETH uses 18 decimal places, matching Ethereum's base-unit convention in which 1 ETH equals 10^18 wei. The token reaches the depositing address after execution, while the Staking Router allocates pooled ETH across Lido's validator set. The address holds a liquid token, not a separately named validator.
That distinction shapes the first status check. Etherscan shows the token balance and transaction independently of a wallet interface, while MetaMask may refresh its portfolio display on a different schedule.
Keep native ETH outside the deposit for later transactions; stETH doesn't pay Ethereum gas for the queue request or claim.
Queue redemption and market swaps settle on different clocks
Two exit routes create different outcomes: the unstETH queue redeems through Lido, while a market swap trades at the available execution price.
The native route locks stETH, waits for finalization and then requires a separate claim. Under ordinary protocol conditions, finalization targets up to 1 ETH for each 1 stETH submitted, with the submitted amount acting as the ceiling. A CowSwap route instead seeks an immediate trade from available liquidity. Curve pools and routes found through 1inch also exchange stETH against market inventory. Their quoted ETH output reflects pool depth, order size, execution costs and the stETH market price at that moment.
The queue suits a planned redemption; a swap suits a deadline. Compare the queue's displayed estimate with the executable quote before committing either path, because the better choice changes with liquidity and urgency.
How does the stETH balance record staking rewards?
One daily AccountingOracle report updates stETH balances by changing pooled ether per share rather than transferring a separate reward token.
Lido records each holder's proportional shares internally, then derives the visible stETH quantity from total pooled ether and total shares. A positive rebase raises the wallet's stETH balance without a new incoming transfer; validator penalties can move it the other way. The contract exposes 18-decimal token units, yet share arithmetic creates small rounding differences at the last units. No live yield belongs in a lifecycle calculation because validator performance, protocol rewards and the pooled balance change between reports.
Transfers divide the position at the moment they execute. The sender keeps only the shares represented by the remaining stETH, and the recipient's portion participates in later rebases. Reading transaction history alone therefore misses balance changes created by the accounting report.
Wrapping into wstETH changes the display, not the stake
One wrap converts rebasing stETH into wstETH, an ERC-20 token whose wallet quantity stays fixed while its stETH value changes.
The wstETH contract locks stETH and mints a share-based wrapper; unwrapping burns wstETH and releases the corresponding stETH. Internally, 1 wei of wstETH balance represents 1 wei of Lido shares, while the conversion rate expresses how much stETH those shares represent. That rate normally updates with the daily stETH rebase. A fixed token count makes routine recordkeeping easier for systems that don't handle rebasing balances, but it doesn't restart staking or create a second reward stream.
Use the correct measurement after wrapping. The wallet's wstETH count should remain unchanged until a transfer, mint or burn, while its stETH-equivalent value carries the position's accounting movement.
A queue request replaces stETH with an unstETH claim
Three lifecycle states - pending, finalized and claimed - separate a withdrawal request from the ETH that eventually reaches the wallet.
The WithdrawalQueueERC721 contract first takes the submitted stETH or wstETH. A standard token path needs an allowance, while an ERC-2612 permit method combines authorization with signed permit data when the chosen interface and wallet support it. The request locks the token amount and mints one unstETH NFT for each request ID. From that point, the locked stETH stops adding rewards to the submitted balance, although the position remains exposed to protocol losses until finalization.
Pending means the request has an ID but no reserved ETH claim.
Finalized means the queue has assigned ETH and made the NFT claimable. Claimed means the current NFT holder completed the last Ethereum transaction, received native ETH and caused that unstETH token to burn. These state changes matter more than a wallet's cached token image.
Request limits determine how many NFTs you receive
A request accepts from 100 wei of stETH through 1,000 stETH, and larger exits must be divided across multiple unstETH NFTs.
Because stETH has 18 decimals, the lower bound equals 0.0000000000000001 stETH. The upper bound applies per request, not per wallet or batch. A 1,001 stETH redemption therefore needs at least 2 request IDs, and the queue can submit those amounts together when the interface supports batching. For wstETH, the contract checks each wrapper amount after converting it to its stETH equivalent, so the visible wstETH number isn't the limit that decides acceptance.
Splitting affects tracking as well as submission. Every accepted amount produces its own NFT and finalization status, which means one part of a larger exit may become claimable before another batch reaches it.
Finalization fixes the ETH claim before collection
One finalization checkpoint reserves ETH for an eligible request and fixes its claimable amount before the owner collects it.
The AccountingOracle finalizes eligible requests in batches after considering available ETH, queue order, elapsed time and the protocol's loss state. Its maximum share-rate field uses 27 decimal places of precision. The queue burns the locked stETH shares and records the ETH reserved for each NFT. That amount cannot exceed the stETH submitted when the request entered the queue. Ordinary finalization follows the 1:1 redemption path, while a sufficiently large protocol loss can set a lower share rate so exiting holders share that loss. The finalization checkpoint stores that rate for later claim calculations.
Finalization doesn't push ETH into the wallet automatically. The owner signs a claim transaction, the WithdrawalQueueERC721 contract sends the reserved native ETH and the corresponding unstETH NFT is burned. Until that action executes, the request remains finalized and unclaimed.
What controls the unstETH waiting time?
A 1–5 day range describes ordinary unstETH conditions, but queue depth, buffer liquidity and Ethereum validator exits control the actual wait.
By contrast, Lido fills the withdrawal buffer from incoming deposits, Consensus Layer withdrawals, priority fees and maximal extractable value rewards. Available buffer ETH lets the protocol finalize requests without waiting for more validators to exit. The queue follows first-in, first-out order and AccountingOracle reports finalize eligible daily batches. A displayed estimate therefore reflects the requests ahead, the ETH already available and the rate at which new ETH reaches the buffer; it isn't a maturity date attached to the NFT (see also Lido finance intro to availability use cases ).
Busy exit periods stretch that estimate.
When buffer funds don't cover queued claims, Lido requests validator exits. An initial Ethereum validator deposit uses 32 ETH, but releasing validator principal follows Ethereum's exit and withdrawal processing rather than Lido's interface clock. Bunker mode also slows finalization when exceptional validator losses or widespread offline performance require stricter accounting. The wait grows when the buffer can't cover the queue and Ethereum's validator exit queue becomes congested.
The NFT holder controls the final claim
One transferable ERC-721 unstETH token carries each request's claim right, so control follows NFT ownership rather than the original depositor.
WithdrawalQueueERC721 also implements ERC-165 interface detection and ERC-4906 metadata updates. Request IDs start at 1 and rise incrementally; an ID of 0 represents the absence of a request in the relevant queue counters. Each status record includes the submitted stETH amount, underlying shares, owner address, timestamp and two Boolean fields for finalized and claimed. Transferring the NFT changes the address entitled to collect reserved ETH, while claiming burns that NFT and closes its request permanently.
A wallet that hides the image doesn't erase the position. The connected Ethereum address and request ID remain the reliable identifiers, and Etherscan can display ownership even when a portfolio view hasn't indexed the updated metadata.
A position-lifecycle checklist before signing
Five checks cover the Lido finance position lifecycle before a holder signs the deposit, wrap, withdrawal and claim actions.
Use the checklist at each state change, not only at entry. It connects the token in the wallet with the next contract action and keeps market execution separate from protocol redemption.
- Confirm Ethereum mainnet with chain ID 1 and retain native ETH for the current transaction plus the later request and claim.
- Match the displayed asset to the intended state: rebasing stETH, fixed-balance wstETH or the non-fungible unstETH request.
- Compare the unstETH time estimate with a CowSwap, Curve or 1inch quote when the exit has a firm deadline.
- Check every request against the 100 wei minimum and 1,000 stETH maximum, using the stETH equivalent for wstETH.
- Record each unstETH request ID and owner address, then return after finalization to sign the separate ETH claim.
The position closes only when native ETH reaches the chosen address and the claimed NFT burns. If ownership changes before collection, the new NFT holder completes that final action.
The queue fits exits that don't need immediate settlement
Two conditions favor the Lido native queue: settlement needn't be immediate and the holder prefers protocol redemption over market execution. A CowSwap, Curve or 1inch route fits an exit where timing outweighs the available stETH-to-ETH price. The queue fits a planned close when the wallet can retain unstETH, wait through finalization and return for the separate claim transaction.
Lido finance - your questions answered
Do I need 32 ETH to open a Lido position?
No, a Lido deposit doesn't require the 32 ETH used for an individual Ethereum validator deposit. The protocol pools deposits and handles validator allocation through its Staking Router, so the wallet chooses a smaller positive ETH amount if desired. The entry transaction still needs extra native ETH for gas, and later queue use needs ETH for the request and claim transactions. The received stETH represents the depositor's proportional share rather than one personally assigned validator.
Does submitting stETH to the queue always take two transactions?
A withdrawal request doesn't always need two on-chain transactions because the authorization path changes the count. A basic ERC-20 flow uses one approval transaction and a second transaction to create the request. WithdrawalQueueERC721 also supports ERC-2612 permit methods, which use signed permit data when the wallet and interface expose that path. Final collection remains separate in both cases: after finalization, the unstETH holder signs a claim transaction to receive native ETH.
Can wstETH enter the withdrawal queue without a manual unwrap?
Yes, WithdrawalQueueERC721 accepts wstETH and unwraps it to stETH inside the request flow. The contract tests the request limits against the resulting stETH equivalent, not merely the visible wstETH quantity. Once accepted, the position follows the same unstETH lifecycle as a direct stETH request: the NFT records ownership, finalization makes ETH claimable and a later claim burns the NFT. The user receives native ETH rather than an intermediate stETH balance.
What happens if my wallet doesn't display the unstETH NFT?
The unstETH request remains on Ethereum even when a wallet doesn't render its image or collection entry. Connect the same owner address to the withdrawal view and use the request ID to read whether it is pending, finalized or claimed. Etherscan can also show ERC-721 ownership and the mint transaction. A missing portfolio image doesn't alter the claim right; the address that currently owns the NFT controls the finalized request.
Why can't I cancel an unstETH request after submission?
An unstETH request can't be canceled because submission locks the stETH and inserts the request into the first-in, first-out queue. The position stops accruing additional stETH rewards once locked, then waits for protocol finalization. The NFT remains transferable, so ownership of the future claim can move to another Ethereum address, but that transfer doesn't restore the original stETH or remove the request. Finalization and claim are the remaining lifecycle states.