How Lido Works Under the Hood: A Deep Dive into Ethereum’s Largest Staking Protocol
--
Lido manages tens of billions of dollars in staked ETH — yet most developers don’t actually understand how it works.
At first glance, it seems simple: deposit ETH, receive stETH, earn rewards.
But under the hood, nothing is actually simple.
There is no single transaction that completes staking.
There is no direct path from deposit to validator.
Instead, Lido operates as a multi-stage, oracle-driven system — where user actions only initiate processes, and the system completes them asynchronously.
Understanding this architecture is the key to understanding how modern DeFi systems are really built.
Why Lido Feels So Different
Most DeFi protocols are user-driven:
- You swap → state updates immediately
- You lend → balance updates instantly
But Lido doesn’t work like this.
In Lido:
- Deposits are delayed
- Withdrawals are asynchronous
- Validator exits are decoupled from user actions
The system is not driven by users — it is driven by oracles.
This is what makes Lido fundamentally different.
1. Deposit Is Not What You Think
When a user deposits ETH into Lido:
- They immediately receive stETH
- But the ETH does NOT go into a validator
Instead:
- ETH sits in a buffer
- Deposits are executed later in batches
- Allocation is handled by StakingRouter
In other words: deposit is decoupled from staking execution
2. The Real Engine: Oracle
Here’s the most important thing to understand:
In Lido, users don’t execute the system — oracles do.
All critical updates happen through periodic oracle reports:
- Validator balances
- Rewards
- Withdrawals
- System accounting
This means:
Nothing is finalized at the moment of user interaction
Everything is settled later, in batches
3. Withdrawal Is a Process, Not an Action
Withdrawal in Lido is not instant.
It happens in three stages:
request → finalize → claim
Between request and claim:
- Validators must exit
- ETH must return from the consensus layer
- Oracle must finalize the request
Withdrawal is not a function call — it’s a lifecycle
Key Design Insights
After breaking down the system, several important patterns emerge:
Oracle-driven execution
State updates happen in cycles, not transactions
Strong decoupling
Deposit ≠ staking ≠ exit ≠ withdrawal
Asynchronous settlement
Everything is eventually consistent
Modular architecture
Router coordinates, modules execute
Lido is not just a staking protocol.
It is an asynchronous settlement system for Ethereum staking.
Full Technical Breakdown
This article only covers the high-level architecture.
I’ve written a complete deep dive covering:
- Deposit flow
- Oracle system
- Withdrawal mechanism
- Fee model
- Exit bus oracle
Full documentation:
https://lido-architecture-notes.vercel.app/