Lido V3 — Deployment update and upcoming voting details
TL;DR
- Technical pre-deployment complete: All Lido V3 contracts have been pre-deployed to Ethereum mainnet and verified on Etherscan. Source code used matches the latest audited commit.
- Final verification in progress: Deployment artifacts have been sent to auditors for independent verification. Before the vote begins, finalized audit reports will be published in a thread, also MixBytes will provide a deployment verification note.
- Vote timeline: Providing no last-minute security findings and audit reports published, an on-chain Aragon vote is tentatively targeted to commence on December 10th, 2025, with enactment optimistically (if supported and non-contentious) expected around December 19th, 2025 (within the 14:00–23:00 UTC window).
- This follow-up note provides complete contract addresses, constructor parameters with rationale, voting structure breakdown, and expected next steps.
Context recap
Following the proposal approval via Snapshot vote, testnet phases left behind, and audit campaign finished, Lido contributors have completed the technical mainnet pre-deployment of all V3 contracts. This update serves as the upcoming voting announcement and details thread ahead of the on-chain vote.
For those new to this topic, Lido V3 introduces staking Vaults (stVaults) — isolated, non-custodial contracts allowing stakers to choose their operator and stake setup while still minting stETH. The existing Core Pool remains unchanged. V3 = Core Pool + stVaults.
Deployment summary
Source code references
| Component | Repository | Audited Commit | Deploy Commit |
|---|---|---|---|
| Core Protocol | lidofinance/core | b98371488 |
b8d51cc7 (UPDATED: 2025-12-11) |
| Easy Track | lidofinance/easy-track | c64468ca5 |
Same |
Note: The deploy commit contains updates to tests, scripts, and voting contracts only. These changes do not affect the bytecode of core protocol contracts — deployed contracts have identical bytecode to the audited commit. View diff.
Contract addresses
Voting tooling contracts
| Contract | Address | Purpose |
|---|---|---|
| V3TemporaryAdmin | 0xf738A2C7d69694B618dbB547C1c5A152D7958f06 |
Auxiliary contract for intermediate admin tasks during deployment; transfers admin to Agent afterward |
| V3VoteScript | 0xE1F4c16908fCE6935b5Ad38C6e3d58830fe86442 (UPDATED: 2025-12-11) |
Vote script orchestrating all upgrade actions |
| V3Template | 0x34E01ecFebd403370b0879C628f8A5319dDb8507 |
Upgrade template with two-step procedure: startUpgrade() / finishUpgrade() |
Core protocol upgrades
| Contract | Proxy Address | New Implementation | Notes |
|---|---|---|---|
| Lido (stETH) | 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84 |
0x6ca84080381E43938476814be61B779A8bB6a600 |
Upgrades to V3 logic via Aragon Kernel |
| LidoLocator | 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb |
0x2f8779042EFaEd4c53db2Ce293eB6B3f7096C72d |
Registry with protocol contract addresses |
| AccountingOracle | 0x852deD011285fe67063a08005c71a85690503Cee |
0x1455B96780A93e08abFE41243Db92E2fCbb0141c |
Upgrades to v4 with stVaults state root reporting (consensus version v5) |
New protocol contracts (to perform migrations)
| Contract | Proxy Address | Implementation | Notes |
|---|---|---|---|
| Burner | 0xE76c52750019b80B43E36DF30bf4060EB73F573a |
0xEe1E3B4f047122650086985f794f0dB5f10Ae49D |
New upgradeable burner replacing old non-upgradeable contract |
| OracleReportSanityChecker | 0xf1647c86E6D7959f638DD9CE1d90e2F3C9503129 |
— | New instance with V3-compatible limits |
| TokenRateNotifier | 0x25e35855783bec3E49355a29e110f02Ed8b05ba9 |
— | New instance; observers migrated from old notifier |
Newly introduced stVaults system contracts
| Contract | Proxy Address | Implementation | Notes |
|---|---|---|---|
| VaultHub | 0x1d201BE093d847f6446530Efb0E8Fb426d176709 |
0x7c7d957D0752AB732E73400624C4a1eb1cb6CF50 |
Central hub for stVault coordination and stETH minting |
| PredepositGuarantee | 0xF4bF42c6D6A0E38825785048124DBAD6c9eaaac3 |
0xCC08C36BD5bb78FDcB10F35B404ada6Ffc71a023 |
Protects deposits from front-running attacks |
| OperatorGrid | 0xC69685E89Cefc327b43B7234AC646451B27c544d |
0xA612E30D71d7D54aEaf4e5A21023F3F270932C2C |
Manages operator groups and risk tiers |
| Accounting | 0x23ED611be0e1a820978875C0122F92260804cdDf |
0xd43a3E984071F40d5d840f60708Af0e9526785df |
New accounting module for V3 |
| LazyOracle | 0x5DB427080200c235F2Ae8Cd17A7be87921f7AD6c |
0x47f3a6b1E70F7Ec7dBC3CB510B1fdB948C863a5B |
“Lazy oracle” for vault value updates with quarantine |
stVaults factory stack
| Contract | Address | Notes |
|---|---|---|
| VaultFactory | 0x02Ca7772FF14a9F6c1a08aF385aA96bb1b34175A |
Factory for creating new stVaults |
| UpgradeableBeacon | 0x5FbE8cEf9CCc56ad245736D3C5bAf82ad54Ca789 |
Beacon proxy pattern for stVault upgrades |
| StakingVault (impl) | 0x06A56487494aa080deC7Bf69128EdA9225784553 |
Reference implementation for vaults |
| Dashboard (impl) | 0x294825c2764c7D412dc32d87E2242c4f1D989AF3 |
Dashboard helper for vault management |
| ValidatorConsolidationRequests | 0xaC4Aae7123248684C405A4b0038C1560EC7fE018 |
Handles validator consolidation requests |
GateSeal
| Contract | Address | Notes |
|---|---|---|
| GateSeal (VaultHub + PDG) | 0x881dAd714679A6FeaA636446A0499101375A365c |
Emergency pause for VaultHub and PredepositGuarantee |
GateSeal Blueprint:
0xEe06EA501f7d9DC6F4200385A8D910182D155d3e
GateSeal Factory:0x6c82877cac5a7a739f16ca0a89c0a328b8764a24
Sealing Committee:0x8772E3a2D86B9347A2688f9bc1808A6d8917760C(existing GateSeal Committee)
Easy Track factories for stVaults Committee
| Factory | Address | Purpose | Phase |
|---|---|---|---|
| RegisterGroupsInOperatorGrid | 0x194A46DA1947E98c9D79af13E06Cfbee0D8610cC |
Register new operator groups | Phase 1 (50k stETH max) |
| RegisterGroupsInOperatorGrid | 0xE73842AEbEC99Dacf2aAEec61409fD01A033f478 |
Register new operator groups | Phase 2/3 (1M stETH max) |
| UpdateGroupsShareLimitInOperatorGrid | 0x8Bdc726a3147D8187820391D7c6F9F942606aEe6 |
Update group share limits | Phase 1 (50k stETH max) |
| UpdateGroupsShareLimitInOperatorGrid | 0xf23559De8ab37fF7a154384B0822dA867Cfa7Eac |
Update group share limits | Phase 2/3 (1M stETH max) |
| RegisterTiersInOperatorGrid | 0x5292A1284e4695B95C0840CF8ea25A818751C17F |
Register new risk tiers | All phases |
| AlterTiersInOperatorGrid | 0xa29173C7BCf39dA48D5E404146A652d7464aee14 |
Modify existing tier parameters | Phase 1 (0 default tier limit) |
| AlterTiersInOperatorGrid | 0x73f80240ad9363d5d3C5C3626953C351cA36Bfe9 |
Modify existing tier parameters | Phase 2/3 (1M default tier limit) |
| SetJailStatusInOperatorGrid | 0x93F1DEE4473Ee9F42c8257C201e33a6Da30E5d67 |
Jail/unjail vault minting capability | All phases |
| UpdateVaultsFeesInOperatorGrid | 0x5C3bDFa3E7f312d8cf72F56F2b797b026f6B471c |
Update vault fee rates | All phases |
| ForceValidatorExitsInVaultHub | 0x6C968cD89CA358fbAf57B18e77a8973Fa869a6aA |
Trigger forced validator exits | All phases |
| SocializeBadDebtInVaultHub | 0x1dF50522A1D868C12bF71747Bb6F24A18Fe6d32C |
Socialize bad debt between vaults | All phases |
| VaultsAdapter | 0xe2DE6d2DefF15588a71849c0429101F8ca9FB14D |
Helper contract for Easy Track operations | All phases |
Notes:
SetLiabilitySharesTargetInVaultHub(0x4E5Cc771c7b77f1417fa6BA9262d83C6CCc1e969) is deployed but will not be connected in the initial vote, as there are no current plans to use it.- Phase 2/3 factories
RegisterGroupsInOperatorGrid0xE73842AEbEC99Dacf2aAEec61409fD01A033f478,UpdateGroupsShareLimitInOperatorGrid0xf23559De8ab37fF7a154384B0822dA867Cfa7Eac,AlterTiersInOperatorGrid0x73f80240ad9363d5d3C5C3626953C351cA36Bfe9are deployed but also will not be connected in the initial vote.
Discontinued Contracts
| Contract | Address | Notes |
|---|---|---|
| Burner (old) | 0xD15a672319Cf0352560eE76d9e89eAB0889046D3 |
Non-upgradeable; replaced by new Burner |
| OracleReportSanityChecker (old) | 0x6232397ebac4f5772e53285b26c47914e9461e75 |
Replaced by new instance |
| TokenRateNotifier (old) | 0xe6793B9e4FbA7DE0ee833F9D02bba7DB5EB27823 |
Observers migrated to new notifier |
| LegacyOracle | 0x442af784A788A5bd6F42A01Ebe9F287a871243fb |
Fully deprecated; no longer referenced |
Constructor/initializer parameters and rationale
V3Template Constructor
constructorArgs: [
V3AddressesParams (struct with 29 addresses and lido app id),
expireSinceInclusive: 1768435200, // Unix timestamp: Jan 15, 2026
initialMaxExternalRatioBP: 300 // 3% = 300 basis points
]
| Parameter | Value | Rationale |
|---|---|---|
expireSinceInclusive |
1768435200 (Jan 15, 2026 00:00:00 UTC) |
Safety mechanism: if the upgrade isn’t enacted by this date, the template becomes unusable. Provides ~4 weeks buffer from expected enactment. |
initialMaxExternalRatioBP |
300 (3%) |
Phase 1 global cap: At most 3% of total stETH supply can be minted via stVaults initially. Ensures Core Pool remains ≥97% of Lido TVL during pilot phase. Per the Risk Assessment Framework and Phase 1 limits ratified via the snapshot. |
V3VoteScript Constructor
constructorArgs: [
upgradeTemplate: 0x34E01ecFebd403370b0879C628f8A5319dDb8507,
timeConstraints: 0x2a30F5aC03187674553024296bed35Aa49749DDa,
odcSlashingReserveWeRightShiftEpochs: 8192,
odcSlashingReserveWeLeftShiftEpochs: 8192
]
| Parameter | Value | Rationale |
|---|---|---|
timeConstraints |
0x2a30F5aC03187674553024296bed35Aa49749DDa |
An axuliary contracts that allows to create time windows eligible for the vote enactments, used in DG before |
odcSlashingReserveWeRightShiftEpochs |
8192 |
Oracle daemon config: epochs to look back from withdrawable_epoch when including slashings in stVault oracle reports. 8192 epochs ≈ 36 days — covers possible correlation penalty period effects. |
odcSlashingReserveWeLeftShiftEpochs |
8192 |
Oracle daemon config: forward-looking window for slashing inclusion. Symmetric with right shift for consistent accounting. |
ENABLED_DAY_SPAN_START |
50400 (14:00 UTC) |
Execution window start — ensures enactment happens somewhere after regular AccountingOracle report arrival. |
ENABLED_DAY_SPAN_END |
82800 (23:00 UTC) |
Execution window end — 9-hour window accommodates global contributors availability. |
VaultHub Constructor
constructorArgs: [
lidoLocator: 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb,
lido: 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84,
hashConsensusForAccountingOracle: 0xD624B08C83bAECF0807Dd2c6880C3154a5F0B288,
maxRelativeShareLimitBP: 1000 // 10%
]
| Parameter | Value | Rationale |
|---|---|---|
maxRelativeShareLimitBP |
1000 (10%) |
Maximum share limit any single vault can have relative to total stETH. Sanity check defensive parameter. |
OperatorGrid Initialization
initialize params (encoded):
admin: 0xf738A2C7d69694B618dbB547C1c5A152D7958f06 (V3TemporaryAdmin),
defaultTierId: 0,
defaultTierReserveRatio: 5000, // 50%
defaultTierForceRebalanceThreshold: 4975, // 49.75%
defaultTierInfraFeeBP: 100, // 1%
defaultTierLiquidityFeeBP: 650, // 6.5%
defaultTierReservationFeeBP: 0 // 0%
| Parameter | Value | Rationale |
|---|---|---|
| Default Tier Reserve Ratio | 5000 (50%) |
Permissionless vaults must hold 50% collateral unminted. Identified operators get lower RR via custom tiers. Per Default Parameters Proposal. |
| Default Tier Force Rebalance Threshold | 4975 (49.75%) |
0.25% below RR. If a vault’s reserve falls below this (e.g., due to slashing), forced rebalancing becomes possible. Small buffer prevents trivial fluctuations triggering rebalance. |
| Default Tier Infrastructure Fee | 100 (1%) |
DAO’s share of vault rewards for platform usage. Covers oracle/operational costs. Per Default Parameters Proposal. |
| Default Tier Liquidity Fee | 650 (6.5%) |
Fee for stETH liquidity provision. Compensates for liquidity risk. Per Default Parameters Proposal. |
| Default Tier Reservation Fee | 0 (0%) |
Initially 0% to simplify initial Lido V3 design. May be revisited to incentivize efficient capital use in future protocol versions. |
LazyOracle Initialization
initialize params (encoded):
admin: 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c (Agent),
quarantinePeriod: 259200, // 3 days in seconds
rewardRatioBP: 350, // 3.5%
maxLidoFeeRatePerSecond: 2880000000000000000 // ~0.0029 ETH/s
| Parameter | Value | Rationale |
|---|---|---|
quarantinePeriod |
259200 (3 days) |
Per LIP-32: suspicious vault value increases are quarantined for 3 days before being credited. Prevents manipulation via fake value increases. |
rewardRatioBP |
350 (3.5%) |
Maximum reward ratio per oracle report. Sanity check against abnormal reward spikes. |
maxLidoFeeRatePerSecond |
~2.88e18 |
Maximum theoretical fee rate the protocol can charge per second. Safety bound. |
Easy Track Factory Limits
| Factory Type | Phase 1 Limit | Phase 2/3 Limit | Rationale |
|---|---|---|---|
| Group registration/update | 50,000 stETH | 1,000,000 stETH | Phase 1: Conservative per-operator cap. Later phases allow larger operators. |
| Default tier share limit | 0 stETH | 1,000,000 stETH | Phase 1: Permissionless minting disabled. Phase 3 enables permissionless minting vaults. |
| Fee bounds (infrastructure) | ≤1% (100 BP) | — | Committee can adjust within bounds; higher requires DAO vote. |
| Fee bounds (liquidity) | ≤10% (1000 BP) | — | Committee can adjust within bounds; higher requires DAO vote. |
| Fee bounds (reservation) | =0% (fixed) | — | Currently unused. |
| Validator exit fee limit | 0.1 ETH | — | Max EIP-7002 fee paid for forced exit operations (under EL requests congestion). |
OracleReportSanityChecker Constructor
constructorArgs: [
lidoLocator,
accountingOracle,
accounting,
agent,
limits: [3600, 1800, 1000, 50, 600, 8, 24, 7680, 750000, 8, 101, 50]
]
| Limit | Value | Meaning |
|---|---|---|
exitedValidatorsPerDayLimit |
3600 |
The max possible number of validators that might be reported as exited |
appearedValidatorsPerDayLimit |
1800 |
The max possible number of validators that might be reported as appeared |
annualBalanceIncreaseBPLimit |
1000 (10%) |
Max annual CL balance increase rate |
simulatedShareRateDeviationBPLimit |
50 (0.5%) |
Max share rate deviation in simulation |
maxValidatorExitRequestsPerReport |
600 |
Max exit requests per validator exit bus oracle report |
maxItemsPerExtraDataTransaction |
8 |
Max extra data items in accounting reports |
maxNodeOperatorsPerExtraDataItem |
24 |
Max operators per extra data item |
requestTimestampMargin |
7680 |
Timestamp margin for requests (seconds) |
maxPositiveTokenRebase |
750000 |
Max positive rebase (in 1e9 precision) |
initialSlashingAmountPWei |
8 |
Initial slashing amount (peta-wei) |
inactivityPenaltiesAmountPWei |
101 |
Inactivity penalties (peta-wei) |
clBalanceOraclesErrorUpperBPLimit |
50 |
CL balance oracle error upper bound |
Note: these parameters are 1:1 with the currently plugged and used OracleReportSanityChecker version.
AccountingOracle Constructor
constructorArgs: [
lidoLocator: 0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb,
secondsPerSlot: 12,
genesisTime: 1606824023
]
| Parameter | Value | Rationale |
|---|---|---|
secondsPerSlot |
12 |
Ethereum mainnet slot duration |
genesisTime |
1606824023 |
Ethereum mainnet beacon chain genesis (Dec 1, 2020) |
| Post-upgrade consensus version | 5 |
Bumped from 4 to support stVaults state root reporting |
| Post-upgrade contract version | 4 |
Bumped from 3 to reflect new capabilities |
GateSeal Configuration
| Parameter | Value | Rationale |
|---|---|---|
| Seal Duration | 14 days | Pause duration before automatic expiry. Ensures system can’t be halted indefinitely. |
| Sealing Committee | 0x8772E3a2D86B9347A2688f9bc1808A6d8917760C |
Existing GateSeal Committee multisig. |
| Sealables | VaultHub, PredepositGuarantee | New V3 contracts requiring emergency pause capability. |
| Expiration timestamp | 1796302499 | Roughly 1 year duration, corresponds to Thursday, December 3, 2026 12:54:59 PM |
Voting Structure
The on-chain Aragon vote is an omnibus proposal with two distinct parts:
Part 1: Voting Items (8 items) — Execute Immediately
These items are executed when the Aragon vote passes (no Dual Governance delay):
| # | Action | Contract Target | Permission Granted |
|---|---|---|---|
| 2 | Add AlterTiersInOperatorGrid (Phase 1) factory to Easy Track | EasyTrack | operatorGrid.alterTiers |
| 3 | Add RegisterGroupsInOperatorGrid (Phase 1) factory to Easy Track | EasyTrack | operatorGrid.registerGroup, operatorGrid.registerTiers |
| 4 | Add RegisterTiersInOperatorGrid factory to Easy Track | EasyTrack | operatorGrid.registerTiers |
| 5 | Add UpdateGroupsShareLimitInOperatorGrid (Phase 1) factory to Easy Track | EasyTrack | operatorGrid.updateGroupShareLimit |
| 6 | Add SetJailStatusInOperatorGrid factory to Easy Track | EasyTrack | vaultsAdapter.setVaultJailStatus |
| 7 | Add UpdateVaultsFeesInOperatorGrid factory to Easy Track | EasyTrack | vaultsAdapter.updateVaultFees |
| 8 | Add ForceValidatorExitsInVaultHub factory to Easy Track | EasyTrack | vaultsAdapter.forceValidatorExit |
| 9 | Add SocializeBadDebtInVaultHub factory to Easy Track | EasyTrack | vaultsAdapter.socializeBadDebt |
Part 2: Dual Governance Items (21 items) — Subject to DG Veto Period
These items go through Dual Governance and execute only after the veto period:
| # | Action | Purpose |
|---|---|---|
| 1.1 | Check execution time window (14:00–23:00 UTC) | Ensure DG proposal enactment aligned with oracle reports and during monitored hours |
| 1.2 | Call V3Template.startUpgrade() |
Lock upgrade window, record initial state |
| 1.3 | Upgrade LidoLocator implementation | Point to new V3 contract registry |
| 1.4 | Grant APP_MANAGER_ROLE to Agent |
Temporary permission for Lido upgrade |
| 1.5 | Set Lido implementation in Aragon Kernel | Upgrade stETH contract to V3 logic |
| 1.6 | Revoke APP_MANAGER_ROLE from Agent |
Clean up temporary permission |
| 1.7 | Revoke REQUEST_BURN_SHARES_ROLE from Lido on old Burner |
Remove obsolete permission |
| 1.8 | Revoke REQUEST_BURN_SHARES_ROLE from Curated Module on old Burner |
Remove obsolete permission |
| 1.9 | Revoke REQUEST_BURN_SHARES_ROLE from SimpleDVT on old Burner |
Remove obsolete permission |
| 1.10 | Revoke REQUEST_BURN_SHARES_ROLE from CSM Accounting on old Burner |
Remove obsolete permission |
| 1.11 | Upgrade AccountingOracle implementation | Enable stVaults state root reporting |
| 1.12 | Revoke REPORT_REWARDS_MINTED_ROLE from Lido on StakingRouter |
Transfer responsibility to Accounting |
| 1.13 | Grant REPORT_REWARDS_MINTED_ROLE to Accounting on StakingRouter |
New rewards reporting path |
| 1.14 | Grant CONFIG_MANAGER_ROLE to Agent on OracleDaemonConfig |
Temporary permission for config update |
| 1.15 | Set SLASHING_RESERVE_WE_RIGHT_SHIFT in OracleDaemonConfig |
Configure oracle slashing lookback (8192 epochs) |
| 1.16 | Set SLASHING_RESERVE_WE_LEFT_SHIFT in OracleDaemonConfig |
Configure oracle slashing look-ahead (8192 epochs) |
| 1.17 | Revoke CONFIG_MANAGER_ROLE from Agent on OracleDaemonConfig |
Clean up temporary permission |
| 1.18 | Grant PAUSE_ROLE to Agent on PredepositGurantee |
Temporary permission for PDG state update |
| 1.19 | Pause PredepositGurantee indefinitely |
Disable PDG-guided deposit flows |
| 1.20 | Revoke PAUSE_ROLE to Agent from PredepositGurantee |
Clean up temporary permission |
| 1.21 | Call V3Template.finishUpgrade() |
Finalize upgrade, migrate burner state, set external ratio |
NOTE: Items 1.18—1.20 added according to the 2025-12-11 update by @tamtamchik
Role Changes Summary
New Burner roles (post-upgrade):
DEFAULT_ADMIN_ROLE: AgentREQUEST_BURN_SHARES_ROLE: Accounting, CSM AccountingREQUEST_BURN_MY_STETH_ROLE: ∅ (none)
VaultHub roles:
DEFAULT_ADMIN_ROLE: AgentVALIDATOR_EXIT_ROLE: VaultsAdapterBAD_DEBT_MASTER_ROLE: VaultsAdapterPAUSE_ROLE: GateSeal, ResealManagerRESUME_ROLE: ResealManagerVAULT_MASTER_ROLE: ∅ (none)REDEMPTION_MASTER_ROLE: ∅ (none)
OperatorGrid roles:
DEFAULT_ADMIN_ROLE: AgentREGISTRY_ROLE: EVMScriptExecutor, VaultsAdapter
PredepositGuarantee roles:
DEFAULT_ADMIN_ROLE: AgentPAUSE_ROLE: GateSeal, ResealManagerRESUME_ROLE: ResealManager
StakingRouter changes:
REPORT_REWARDS_MINTED_ROLE: Lido → Accounting
Tentative Timeline
NOTE: Timing subject to security findings and operational readiness. Any delays will be communicated.
| Date | Milestone |
|---|---|
| December 10th | On-chain Aragon vote commences (~3 days voting + 2 days objection) |
| December 15th | Vote enactment; Easy Track factories become active; DG submission for core upgrade |
| December 15th–19th | Dual Governance veto collection period (~3 days) + pre-execution timelock (~1 day) |
| December 19th | Rollout date — Enactment window 14:00–23:00 UTC. First stVaults can be created and connected to VaultHub. |
| December 20th | First AccountingOracle report containing stVaults state data (may have slight delays) |
| Late Dec 2025+ | Active monitoring, running-in period, phase transition planning |
| ~Jan 2026 | If 30 days pass with no incidents, DAO considers Phase 2 transition (30% cap) |
| ~Q1 2026 | Target for Phase 3 (permissionless minting) if conditions met |
Verification and Audit Status
Audits
Lido V3 has undergone multiple independent audits:
| Firm | Scope | Status |
|---|---|---|
| Certora | Formal verification + on/off-chain audit rounds | Completed, reports to be published |
| ConsenSys Diligence | An on-chain audit + invariant fuzzing | Completed, report to be published |
| Composable Security | Oracle/infra audit, threat models beyond | Completed, report to be published |
| MixBytes | Vault logic, global accounting math, Easy Track factories, governance wiring | Completed, reports to be published |
Final audit reports will be published in the Lido Audits repository and linked here once available.
Deployment Verification
An independent deployment verification report by MixBytes will be published before the vote begins. This report will confirm:
- Bytecode matches audited commit
- Constructor parameters are correct
- Access control is properly configured
- State initialization is valid
Bug Bounty
The Immunefi bug bounty program are to be extended to cover V3 contracts. Also, there is an ongoing Lido V3 bug bounty competition with boosted rewards for any severe vulnerabilities found.
What this means for stakers
Existing stETH/wstETH holders: No action required. The upgrade is backward-compatible. All existing functionality (staking, wrapping, withdrawals, transfers, permits) continues to work exactly as before.
New vault users: After enactment, you can create stVaults and stake ETH immediately. stETH minting will be available for identified operators within the 3% global cap (Phase 1). Permissionless minting is disabled until Phase 3.
Node Operators: Early adopters and Lido V3 supporters will be onboarded first. Contact the stVaults Committee for participation details.
Next Steps
- Final audit reports — To be published and linked
- MixBytes deployment verification report — Expected before vote launch
- On-chain vote — Tentatively penciled for December, 10th
- Community monitoring — Post-upgrade observation period
If you have questions about the upgrade mechanics, contract parameters, or any edge cases, please ask below. Lido contributors are here to address your queries.
Thank you for your engagement in the Lido DAO governance. Onwards to Lido V3! ![]()