Lido finance

Lido finance is a Liquid Staking Protocol for ETH Rewards and Withdrawals

Lido finance is an Ethereum staking workflow that turns a wallet's ETH deposit into transferable stETH, updates that position through protocol accounting and returns ETH through a queued claim. The important decisions are token form, balance interpretation, wallet authority and the moment a withdrawal stops earning staking rewards.

A withdrawal request accepts 100 wei to 1,000 stETH and stops earning rebases once queued.

One signed deposit creates a usable staking position

A self-custody ETH holder gets a liquid Lido position when one confirmed staking transaction mints stETH to the same Ethereum address.

The Lido finance position starts with native ETH on Ethereum mainnet. A solo Ethereum validator requires 32 ETH and validator infrastructure; Lido pools deposits, so the wallet deals with an ERC-20 receipt instead. stETH uses 18 decimal places, matching ETH's smallest-unit convention: 1 ETH equals 1,000,000,000,000,000,000 wei. At the contract boundary, 1 ETH deposited mints 1 stETH before share-level rounding. The active stake limit determines whether the call proceeds. Keep extra ETH in the wallet because the staking call consumes network gas beyond the deposited amount.

Summary: One signed deposit creates a usable staking position
Stage Visible state Custody or control model
Fund wallet Native ETH is available for deposit and gas The account owner controls the ETH
Submit stake A call to the Lido staking contract confirms The signer authorizes the contract to accept ETH
Receive stETH A rebasing stETH balance appears The wallet controls the ERC-20 tokens
Track reports The balance reflects the latest share conversion AccountingOracle updates protocol accounting while the holder retains the tokens
Adjust holding stETH moves or wraps into wstETH The holder signs the transfer or wrapper call
Request withdrawal An unstETH NFT records a pending queue entry WithdrawalQueueERC721 locks the tokens while the NFT holder controls the claim right
Claim ETH The finalized request pays native ETH The current NFT holder authorizes the claim and the NFT burns

A confirmed mint marks entry. From then on, the position follows shares and holder addresses rather than the original deposit transaction.

stETH balances turn protocol shares into a readable position

A stETH balance reads correctly only when the wallet or dashboard queries Lido's share conversion rather than relying on cached transfers.

Shares stay constant between transfers

Lido records ownership in shares. The public stETH balance equals an address's shares multiplied by total pooled ether and divided by total shares. A rebase changes the conversion, not the holder's underlying share count. Two snapshots therefore matter: the token balance and the share rate used at each timestamp. Etherscan reads the contract's present balance, while a portfolio system that stored yesterday's number without refreshing will show stale data.

Oracle frames update the display

The AccountingOracle normally reports once per 225-epoch frame. Ethereum defines 32 slots per epoch and 12 seconds per slot, so one frame contains 7200 slots and spans 86,400 seconds, or 24 hours. A late or missed report delays the rebase; it doesn't create a transfer into the wallet. The same share holding maps to a revised stETH quantity after the protocol processes its accounting.

Transaction history differs from reward history

ERC-20 Transfer events capture mints, burns and movements, but a normal stETH rebase doesn't emit a transfer for every holder. Lido's rewards view reconstructs changes across reports. Wallet balance snapshots provide a better ledger than a count of incoming token events.

Token form decides whether the balance or exchange ratio moves

stETH and wstETH represent the same pooled staking exposure, yet their wallet balances respond differently to each AccountingOracle report.

Rebasing stETH keeps the token amount aligned with the share conversion, so a wallet display rises or falls when the protocol reports rewards or losses. The token uses 18 decimals, though share-based division rounds down at wei precision. wstETH uses a fixed wallet balance: wrapping locks stETH in the WstETH contract and mints wrapper units, while unwrapping burns those units and returns the corresponding stETH. One wstETH therefore represents a changing amount of stETH, even though the displayed wstETH quantity stays unchanged between transfers. The rest of that story sits in Lido finance intro to availability use cases.

Use stETH when balance rebases fit the intended accounting. Use wstETH when a fixed token count makes integration records easier to reconcile.

Uniswap V3 includes wstETH and ETH pools, while Curve supports stETH and ETH liquidity. Those venues execute market swaps, not Lido withdrawals. Their exchange result follows pool liquidity and route execution, whereas wrapping uses Lido's share conversion. Treat the two actions as different lifecycle events.

Transfers, wrapping and swaps alter the position in different ways

A routine Lido adjustment preserves staking exposure only when the destination receives stETH shares or the equivalent wstETH wrapper units.

Moving stETH between wallets

A transfer moves shares from the sender to the recipient, and subsequent rebases affect the address holding those shares. Moving stETH between a MetaMask account and a Ledger-controlled address preserves the staking position if both addresses belong to the same holder. Because stETH converts requested token units into shares with integer division, an exact full-balance transfer can leave 1 wei behind. That residue comes from token accounting rather than a separate reward.

Wrapping without exiting

Wrapping changes the display format without withdrawing ETH. The WstETH contract holds the deposited stETH and issues non-rebasing wstETH units against it. An unwrap reverses that conversion in one Ethereum transaction. No unstETH NFT or withdrawal queue entry appears during either action.

Swapping changes the economic position

A swap through Curve, CoW Swap or 1inch exchanges the token against market liquidity. The holder receives the route's output and gives up the corresponding stETH or wstETH exposure. Pool depth, trade size and Ethereum gas set the execution outcome at that moment. A transfer or wrap preserves the staking position; a swap belongs only where changing asset exposure is the intended adjustment.

The withdrawal queue turns stETH into a claim

A native Lido withdrawal completes only after WithdrawalQueueERC721 locks the token, AccountingOracle finalizes the request and the holder claims ETH.

Request submission

Each native request accepts at least 100 wei and at most 1,000 stETH, with larger holdings split into multiple queue entries. A wstETH request converts wrapper units into their corresponding stETH amount before entering the queue. The transaction transfers the tokens to WithdrawalQueueERC721 and mints an unstETH NFT. A submitted request can't be cancelled, and its locked stETH stops receiving subsequent rebases while it waits.

Queue finalization

WithdrawalQueueERC721 processes requests in first-in, first-out order. Available ETH from the protocol buffer handles requests before additional validator exits supply funds. AccountingOracle finalization reserves ETH, burns the locked stETH and changes the entry from pending to claimable. The claimable amount can't exceed the stETH recorded when the request entered the queue. Protocol-level losses before finalization can reduce that amount through the applicable share rate.

ETH claim

The unstETH token follows ERC-721, while ERC-4906 metadata updates communicate its changing status. Ownership matters because the current NFT holder controls the claim, even after a transfer. A successful claim sends the reserved ETH to the designated recipient and burns that NFT, preventing a second claim against the same request. Finalization and claiming remain separate Ethereum state changes.

ETH gas and wallet authority set the transaction requirements

Every Lido lifecycle transaction needs Ethereum mainnet ETH for gas, while token-moving steps also require the wallet authority expected by the relevant contract.

Ethereum mainnet uses chain ID 1. An account address contains 20 bytes, displayed as 40 hexadecimal characters after its prefix, while a transaction hash contains 32 bytes and displays 64 hexadecimal characters. These fixed identifiers distinguish the signing account from the transaction record. A native ETH stake needs no ERC-20 allowance. Wrapping and withdrawal move tokens, so the contract needs an allowance or a supported signed permit. stETH supports ERC-2612 permits with EIP-712 typed data, including a nonce and deadline, while ERC-1271 covers compatible contract-signature validation.

Gas expenditure comes from the network base fee, the selected priority fee and the gas consumed by the call. A pending transaction hasn't changed the staking position yet, so submitting another call with the wrong account or nonce creates a second transaction path. The connected chain, signer and transaction hash establish which action controls the position. A permit combines signed authority with the contract action; a conventional allowance records that authority as a separate state change.

Smiling person posing outside a restaurant with a LIDO Manhattan Beach sign

The cleanest fit is a self-custody Ethereum holder

By contrast, Lido finance fits an Ethereum holder who wants transferable staking exposure and accepts share accounting, daily reports and a queued native exit.

The lifecycle rewards precise recordkeeping. Track both token form and holder address, because stETH rebases while wstETH holds a fixed unit count. Keep gas ETH outside the staked amount. Treat an unstETH NFT as the transferable right to the eventual claim, since moving it also moves control of the reserved ETH. Smart-contract behavior, validator performance and protocol governance remain part of the position until the claim settles.

The structure is less suitable when the holder requires a fixed exit time or direct control over validator operations. A secondary-market swap provides immediate execution at a market-determined rate, while the native queue preserves protocol redemption order. Running a solo validator supplies direct operational control at the 32 ETH activation threshold; holding stETH emphasizes token liquidity and delegated validator operation.

Lido finance: quick answers

Are several finalized Lido requests claimable in one transaction?

Several finalized Lido withdrawal requests can be claimed together from the same connected wallet. Each request still carries its own ID, final ETH amount and unstETH NFT. The batch claim submits one Ethereum transaction, transfers reserved ETH for the selected claims and burns each corresponding NFT. A pending request cannot join that claim because AccountingOracle finalization must occur first. Unselected finalized requests remain available for a later claim.

Does transferring an unstETH NFT change its place in the withdrawal queue?

Transferring an unstETH NFT changes the claim owner without changing the request's FIFO position. The token ID, requested stETH amount, timestamp and finalization status stay attached to the same queue entry. The recipient gains control of the future ETH claim, while the sender loses it. Once finalization reserves ETH, the current NFT holder can claim; that transaction pays ETH and burns the NFT exactly once. Queue priority stays intact throughout the transfer.

Can I stake ETH with Lido directly from a centralized exchange account?

Stake from a self-custody wallet that will receive and control the minted stETH. Sending ETH from a centralized exchange account directly to Lido risks minting stETH to the exchange-controlled sender rather than your personal address. Withdraw ETH to MetaMask, Ledger or another wallet you control first, retain enough ETH for gas and then sign the staking call from that address. The confirmed mint should appear at the same address that authorized the deposit.

Will wrapping stETH into wstETH start the withdrawal waiting period?

Wrapping stETH into wstETH does not enter Lido's withdrawal queue. The wrapper transaction locks stETH and mints a fixed-balance ERC-20 token at the contract's share conversion. The staking position continues, with rewards reflected in the changing stETH value represented by each wstETH. Only a WithdrawalQueueERC721 request starts the asynchronous exit process. Unwrapping wstETH back to stETH is also immediate after Ethereum confirms the transaction; neither wrapper action creates an unstETH NFT.

Must stETH and wstETH be submitted as separate native withdrawal requests?

A single native withdrawal request uses either stETH or wstETH as its submitted token type. The queue exposes separate request methods for the two assets. When wstETH is chosen, the contract converts its wrapper units into the corresponding stETH amount before recording the request. You can create multiple requests from the same wallet, including requests originating from both forms, then claim any finalized entries together. Every entry keeps its own ID and status.