Lido V3 — Design & Implementation Proposal

TL;DR

  • V3 is near-ready. Following the whitepaper vision, the first production-ready Lido V3 build has run through two public testnets and is in late audits. Final testnet and follow-up changes from the audits are still to come.
  • stVaults introduce a non-custodial, over-collateralized way to choose how and with whom to stake while still minting stETH. The existing 1:1 staking path continues as the Core Pool.
  • Why it matters. V3 turns the Lido protocol from a single pool into Ethereum staking infrastructure: operator-led vaults, DVT/restaking sidecars, leverage loops, and institutional setups.
  • Safety first. stETH minting via stVaults rolls out in phases with global and per-operator caps, backed by a published risk assessment framework for stVaults.
  • Ask. Lido contributors are seeking DAO feedback and sentiment ahead of Snapshot and, if supported, an on-chain Aragon vote after testnets, audits, and final security checks conclude.

Intro

Lido V3 originated in GOOSE-2 to broaden stETH’s product surface. Since then: early-adopter program, public RFCs, multiple private devnets, two public testnets on Hoodi, and a multi-firm audits campaign (pending completion).

Key milestones:

With design converged and audits maturing, now is the right time to gauge DAO alignment on upgrading to V3.

Design

V3 101: What is Lido V3? (Recap)

stVaults are isolated within the normal operation mode defined by the risk assessment framework for stVaults. They are opt-in vault contracts that delegate stake to a chosen operator under configurable terms (fees, MEV/sidecars, key management, insurance). They’re non-custodial and connect to Lido’s liquidity layer by over-collateralized stETH minting (a reserve stays in ETH to absorb penalties). Vaults can later be disconnected and ossify their implementation, removing any future DAO-imposed changes.

Core Pool (formerly Lido V2) remains unchanged. Users who want simple 1:1 battle-tested staking keep the same path. V3 = Core Pool + stVaults. The same stETH token is used across both paths; oracle/accounting was upgraded accordingly.

What this unlocks (live examples)

  • Operator-led liquid staking: stake directly with a preferred operator and still get stETH.
  • Custom strategies: DVT clusters, restaking sidecars, specialized MEV/infra.
  • DeFi loops: use stETH as collateral while ETH keeps compounding in-vault.
  • Institutional vaults: bespoke terms without sacrificing liquidity.

Motivation

V3 resolves the staking setup control vs liquidity trade-off. Today, many stakers want operator choice, DVT, or compliance requirements — features that a single pooled model can’t serve well. V3 decouples validator selection from the liquidity layer, expanding stETH’s addressable market while improving validator set diversity and resilience.

Strategically, V3 delivers on GOOSE-2: Lido evolves from “the pool” to a platform others can build on, supporting a diverse product line. It aligns incentives: operators win direct demand; builders compose new products; stakers gain choice without losing liquidity. Vault isolation and opt-out mechanics mitigate the risk of DAO-imposed upgrades without a vault owner’s consent, ensuring vault sovereignty and an effective escape hatch.

Foundations and in-depth design

For those interested in diving deeper, here are key reference materials that underpin the Lido V3 design and plan:

  • Lido V3 Whitepaper (Final Draft) – Comprehensive overview of the V3 architecture, stVault mechanics, and design rationale.
  • User and integration guides — Hands-on docs and recipes to build atop of Lido V3.
  • Lido Staking Vaults: Technical Design and Architecture - The living document, outlining the core stVaults design principles, architecture, and mechanics at a high level.
  • Lido Improvement Proposals - A set of design documents describing important Lido protocol and governance mechanisms aspects, together with their cornerstone changes brought with the Lido V3 upgrade.
  • Risk Assessment Framework for stVaults – A forum post outlining the risk management model for V3. It covers the guiding principles (e.g. stVault users don’t negatively affect stETH holders), defines the global cap on stVault usage (initially ~30% of Lido’s TVL, ~3M ETH), and describes how Reserve Ratios and per-vault caps are set to contain slashing risks and maintain stETH redeemability. This framework informed the secure rollout limits below.
  • stVaults committee - A forum proposal to establish a committee, monitoring stVaults’ performance and evolution, facilitating onboarding of new stVaults, and handling requests from stVault Owners and Node Operators for non-default terms.
  • stVaults Fees Approach – Discussion of the fee model for stVaults. Lido V3 introduces up to three types of fees on vaults (infrastructure fee, reservation liquidity fee, and liquidity fee) to ensure the DAO can fairly charge for use of the system’s resources. The fee approach is flexible to accommodate different use cases (e.g. institutions might accept higher infra fees but need low liquidity fees). The final proposed default fee percentages and their basis are summarized in an update post (August 2025) after community feedback.
  • Default risk assessment framework and fees parameters for Lido V3 (stVaults) - A forum thread, unveiling the set of default parameters that will be proposed for stVaults for risk framework and default fee values.
  • Lido V3 Audit scope – An audit scope, describing related to Lido V3 components (solidity contracts and off-chain oracles) and important design aspects for security experts consideration.

Implementation

Current status

  • Code: feature-complete; offchain stVaults-enabled oracle and accounting rewrites to scale operator count and track vault paths.
  • Audits: To ensure security, Lido V3 has been undergoing extensive audits by multiple independent firms (each focusing on different aspects):
    • Certora: formal verification + on/off-chain review
    • ConsenSys Diligence: deep on-chain review + invariant fuzzing
    • Composable Security: oracle/infra, threat models
    • MixBytes: vault logic, global accounting math, governance wiring

    As of this writing, several interim audit reports have already been delivered, with all audits being targeted to conclude by mid-October 2025.

  • Testing: two public testnets and multiple internal devnets so far; the final public testnet to be launched in October
  • Bug bounty: to be extended on Immunefi post-audit hardening

Rollout plan

Secure Rollout with Phased Caps

While anyone can create a vault and stake ETH from day one, stETH minting through stVaults will be phased to limit risk and validate the system in live conditions.

Governance and oversight of the phases are split between:

  • Lido DAO — explicitly decides on phase 1→2 transition via an on-chain vote (by adjusting the global minting cap).
  • stVault Committee — monitors performance, operator behavior, and risk metrics; manages parameters (reserve ratios, per-operator caps, minting permissions, fees). It can propose forced exits and adjustments via Easy Track, subject to LDO veto.

The rollout follows a three-phase framework, gradually increasing scale and openness:

  • Phase 1: Pilot (starts with Lido V3 upgrade enacted)

    • Global cap: 3% TVL (~300k stETH) total minted through stVaults
    • stETH minting: permissioned node operators only (early adopters prioritized)
    • Per-operator cap: 50k stETH, expandable if global cap not filled
    • Permissionless vaults: staking enabled, minting disabled
  • Phase 2: Controlled Expansion (30 days with zero incidents related to stVaults + next DAO voting slot)

    • Global cap: 30% TVL (~3M stETH) total minted through stVaults
    • Identified operators: 50k cap, expandable on business-case review
    • Permissionless vaults: staking enabled, minting disabled
  • Phase 3: Permissionless Mode (30 days with zero incidents related to stVaults + non-objected Easy Track motions)

    • Global cap: same as Phase 2
    • stETH minting: enabled for all vaults according to risk framework parameters
    • Per-operator cap: up to 1M stETH (both identified and permissionless)

This phased rollout limits systemic risk, builds real-world data, and ensures stability before full-scale adoption.

Security considerations and emergency mechanisms

The protocol implements multiple layers of caps, limits, and pause mechanisms to ensure system safety:

1. Minting Caps and Limits

  • Global external ratio cap: Enforces maximum percentage of stETH that can be minted through vaults (e.g., 3% in Phase 1, 30% in Phase 2)
  • Global staking rate limit: All stETH minting (Core Pool + vaults) is subject to a 150k stETH/day moving window limit
  • Per-vault share limit: Each vault has an individual limit, restricting the maximum stETH shares it can mint (derived from the risk tier assigned by default)

2. Pause and controls

  • Lido DAO Agent can upgrade VaultHub and StakingVault beacon proxy implementations (except for ossified stVaults), perform technical administrative actions, and assign/resign committees below.
  • stVaults Committee can initiate Easy Track governance motions related to risk framework parameters and corrective actions for individual vaults; the committee will be assigned by a dedicated proposal.
  • GateSeal Committee: can push a time-limited emergency pause over VaultHub and Predeposit Guarantee (PDG) operations; it is proposed that the existing committee be used.
  • Vault Owners:
    • can manually pause beacon chain deposits
    • can voluntarily disconnect a vault from the Lido protocol (the vault becomes detached from VaultHub and Oracle)
    • being disconnected, can ossify its proxy implementation (excluding dependency on the Lido DAO governance)

3. Risk Thresholds

  • Reserve Ratio (RR): Minimum reserve percentage (e.g., 10%) - blocks new mints when breached
  • Force Rebalance Threshold (FRT): Critical reserve level (e.g., 5%) - enables forced rebalancing
  • Bad Debt: When vault.liabilityShares > stETH.getSharesByPooledEth(vault.totalValue()), vault enters the bad debt state

Note: as described in the failure modes of LIP-31, the bad debt losses can potentially be covered by:

  • replenishing the staking vaults accrued bad debt with additional funds;
  • socializing the bad debt among vaults containing slashed validators of the same node operator;
  • executing a self-coverage application (see LIP-18);
  • internalizing the losses to protocol, decreasing stETH token rebase (as it would have been with the Lido Core pool staking penalties) within the next oracle report (using the bad debt internalization mechanism)

These mechanisms work together to limit risks while allowing the protocol to scale safely. Emergency responses can be triggered at multiple levels - from individual vault issues to system-wide concerns.

Next steps

We invite the community to provide feedback on this proposal and the Lido V3 design. Please share any concerns, questions, or suggestions you have here in this forum thread. Assuming general support and no blocking issues are raised, the tentative plan is to proceed with a Snapshot vote to signal DAO approval of the V3 upgrade.

Tentative timeline

  • Late Sep 2025: Barring objections, initiate a Snapshot vote for signaling support of Lido V3.
  • Oct 2025:
    • If Snapshot support is positive, deploy the Lido V3 contracts to the Hoodi testnet, upgrading the main Lido testnet instance.
    • Finalize all ongoing audits, address fixes, and complete minor contract changes. A summary of audit results will be published in the thread for DAO review, assuming no pending resolution findings are left.
    • Schedule an on-chain vote to upgrade and execute the contract changes. The exact details (specific contract addresses, etc.) will be posted before the vote, together with 3rd-party deployment verification notes.
  • Nov 2025: Enactment of Lido V3 upgrade on mainnet, assuming the on-chain vote passes. Contracts will be upgraded, and the new modules (VaultHub, etc.) will be initialized. Phase 1: Pilot begins immediately at this point – all vaults can start accepting deposits, and eligible ones can access minting within the 3% global cap. Close monitoring in the initial weeks post-launch.
  • Mid-Dec 2025: If everything runs smoothly, transition to Phase 2: Controlled Expansion. This would involve lifting the global cap to ~30% via a new DAO vote. Additional node operators and stVaults might be invited to enable minting, possibly in batches. Also, per-node operator minting limits increases expected according to the demand.
  • ~Q1 2026: Target for Phase 3: Permissionless Mode activation. By this time, we expect to open stVaults minting to the public. Once enabled, any new vault that connects to the Lido protocol can permissionlessly mint stETH up to its tier limits.

Note: timing remains subject to security and operational readiness.


Thanks to everyone who has been reviewing, testing, and pressure-testing V3; let’s keep building on Ethereum and Lido <3.

26 Likes

Snapshot vote started

The Lido V3 — Design & Implementation Proposal Snapshot has started! Please cast your votes before Mon, 29 Sep 2025 16:00:00 GMT :folded_hands:

1 Like

Snapshot vote ended

Thank you all who participated in the Lido V3 — Design & Implementation Proposal Snapshot, the proposal passed! :folded_hands:
The results are:
Yes: 57.9M LDO
No: 0 LDO

:white_check_mark: Winning option: Yes

Following Lido DAO’s approval of design and implementation, the Lido V3 contracts were deployed to the Hoodi testnet, updating the main Lido testnet instance. This setup now functions as the long-term testnet environment for Lido contracts, including stVaults.

Mainnet: Coming soon™. Stay tuned.

3 Likes

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 dff61bb1a (UPDATED: 2025-12-08)
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 0xf2BeCc7aF0AA50DaD54781e06d5ce1A7eAD59AfA (UPDATED: 2025-12-08) 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:

  1. SetLiabilitySharesTargetInVaultHub (0x4E5Cc771c7b77f1417fa6BA9262d83C6CCc1e969) is deployed but will not be connected in the initial vote, as there are no current plans to use it.
  2. Phase 2/3 factories RegisterGroupsInOperatorGrid 0xE73842AEbEC99Dacf2aAEec61409fD01A033f478, UpdateGroupsShareLimitInOperatorGrid 0xf23559De8ab37fF7a154384B0822dA867Cfa7Eac, AlterTiersInOperatorGrid 0x73f80240ad9363d5d3C5C3626953C351cA36Bfe9 are 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 (18 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 Call V3Template.finishUpgrade() Finalize upgrade, migrate burner state, set external ratio

Role Changes Summary

New Burner roles (post-upgrade):

  • DEFAULT_ADMIN_ROLE: Agent
  • REQUEST_BURN_SHARES_ROLE: Accounting, CSM Accounting
  • REQUEST_BURN_MY_STETH_ROLE: ∅ (none)

VaultHub roles:

  • DEFAULT_ADMIN_ROLE: Agent
  • VALIDATOR_EXIT_ROLE: VaultsAdapter
  • BAD_DEBT_MASTER_ROLE: VaultsAdapter
  • PAUSE_ROLE: GateSeal, ResealManager
  • RESUME_ROLE: ResealManager
  • VAULT_MASTER_ROLE: ∅ (none)
  • REDEMPTION_MASTER_ROLE: ∅ (none)

OperatorGrid roles:

  • DEFAULT_ADMIN_ROLE: Agent
  • REGISTRY_ROLE: EVMScriptExecutor, VaultsAdapter

PredepositGuarantee roles:

  • DEFAULT_ADMIN_ROLE: Agent
  • PAUSE_ROLE: GateSeal, ResealManager
  • RESUME_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

  1. Final audit reports — To be published and linked
  2. MixBytes deployment verification report — Expected before vote launch
  3. On-chain vote — Tentatively penciled for December, 10th
  4. 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! :rocket:

10 Likes

That’s really great to see. Can’t wait for Lido V3 and stVaults to be a reality on mainnet!

4 Likes

Vote Script Discrepancy Report

Following the DAO-Ops established voting verification procedures, a discrepancy has been identified in the pre-deployed V3VoteScript contract (0xa47Ca1d2029D8e735237ea4E74c607426d4aA07e).

Issue Details

The IVaultsAdapter interface within V3VoteScript contains outdated function signatures that don’t match the deployed VaultsAdapter contract (0xe2DE6d2DefF15588a71849c0429101F8ca9FB14D).

Function Signature Mismatches

  1. updateVaultFees() function
    • V3VoteScript interface: Uses uint16 for fees
    • Deployed VaultsAdapter: Uses uint256 for fees
  2. forceValidatorExit() function
    • V3VoteScript interface: Includes an extra address _feeRecipient parameter
    • Deployed VaultsAdapter: Does not include the _feeRecipient parameter

Impact

These mismatches generate incorrect function signatures. Since these signatures are used in the ACL for EasyTrack factories, calls will be blocked as unauthorized and will fail to execute.

Resolution

A fix has been implemented and deployed:

New V3VoteScript address: 0xf2BeCc7aF0AA50DaD54781e06d5ce1A7eAD59AfA

The fix and newly deployed address have been sent to the auditors, and an additional layer of test coverage is in progress.

4 Likes

Lido V3 Launch Update

TL;DR

After extensive audits across three testnets, contributors are ready to bring Lido V3 to mainnet.
Voting begins December 15th, with an assumed enactment date of December 24th if the proposal passes.


Phase 1 → Soft-Launch Mode

Given the complexities and cross-component interactions in Lido V3, contributors propose a more cautious rollout by executing the previously defined Phase 1: Pilot as a soft launch, followed by a full launch shortly after.

Soft Launch Goals

The soft launch will make Lido V3 and stVaults available for builders on mainnet as early as late December, enabling partners to integrate and properly test.

Soft Launch Caveats

During soft launch, some V3 features (comparing with the described Phase 1 modes) will intentionally remain disabled:

  • PredepositGuarantee (PDG) functionality, meaning that vault owners and users should only interact with node operators who are trusted, and certain advanced operations may be limited (e.g. using direct deposit top-ups or flash-loans to interact with stVaults and DeFi together) until the PDG mechanism’s edge-case handling is hardened further.
  • The stVaults UI and broader API/SDK components, meaning that vaults will be created, managed, and interacted with either via use of the stVaults CLI, direct contract interactions, or custom integrations.

Phase 1 Operational Limits

General Phase 1 limits will apply, including:

  • Global cap of ~300k stETH available for minting
  • stETH minting restricted to permissioned node operators only

Audience

Soft launch is intended for known partners and integrators.
The broader public is not expected to interact with vaults during this phase.
Public-facing communications and promotional activities will begin at full launch.


Phase 2 → Full Launch Mode

The full launch, aligned with Phase 2, is expected in late January.

Phase 2 will:

  • Enable advanced Lido V3 functionality
  • Open the door for wider public usage
  • Be accompanied by broader communications and promotion

More details coming shortly, thanks for bearing with Lido V3 :blue_heart:

6 Likes