Lido V3 — Design & Implementation Proposal

Lido V3: Phase 2 voting (Full Launch)

Hi everyone!

Following the successful Lido V3: Phase 1 (soft launch), we’re ready to kick off the Phase 2 (Full Launch) governance process for Lido V3 and stVaults.

TL;DR

  • Phase 2 unlocks:
    • PDG on mainnet (now hardened and production-ready)
    • Global stVaults minting limit raised to ~3M ETH (via 30% max external ratio)
    • stVaults UI + DeFi wrapper rollout + broader API/SDK components
    • Governance tooling refresh (updated Easy Track factories for stVaults Committee operations)
  • Tentative timeline
    • On-chain voting start: Jan 20, 2026
    • Expected enactment: ~Jan 29, 2026 (subject to the vote outcome + execution scheduling)

Context (Phase 1 → Phase 2)

Phase 1 has been live on mainnet in soft-launch mode since late December. It intentionally shipped with conservative guardrails:

  • Predeposit Guarantee (PDG) was disabled
  • UI / API / SDK were not live (partners used CLI / direct contract interaction / custom integrations)
  • A conservative ~300k stETH global minting cap and permissioned trusted-mode node operators were used for the initial rollout

Since Phase 1 went live (including the initial stETH minting capacity allocation for the first 22 Node Operators on Dec 29), we’ve had no incidents on Lido V3, and the system has been behaving as expected.

This phased approach is intentional: as discussed in the original proposal, early versions of Lido V3 are meant to be iterated on and adjusted as real-world usage provides better signals about risk, demand, and operational constraints.

PDG is hardened and production-ready

The Predeposit Guarantee (PDG) is now ready for mainnet usage, following an additional audit/review by Sigma Prime of the updated underlying BLS library.

PDG enables:

  • Non-custodial validator depositing
  • Smoother validator top-ups
  • Leveraged staking flows (e.g., via flash loans), where applicable

PDG has also been already re-enabled on the Hoodi testnet and can be tested end-to-end.

Full launch deliverables

Phase 2 is the “full launch” package, completing the items we previously communicated to partners:

  • Higher global minting capacity: set Lido’s max external ratio to 30%, bringing the global minting limit to roughly ~3M ETH (≈30% of Lido Core TVL).
  • stVaults UI + DeFi wrapper + broader components: rolling out the UI and wrapper components promised for the full release, making integrations and day‑to‑day operations significantly easier.
  • Updated governance tooling: refresh of stVaults Committee Easy Track factories to the new versions and updated permissions wiring.

Voting items

The Phase 2 vote contains:

  • A Dual Governance (DG) proposal containing actions 1.1–1.13 (the core protocol changes)
  • A Lido DAO on-chain vote with items 1–15 that submits the DG proposal and updates Easy Track factories

New deployments

Contract Address Repository Description
PDG (Predeposit Guarantee) — new implementation 0xE78717192C45736DF0E4be55c0219Ee7f9aDdd0D lidofinance/core@33f2f59 New PDG implementation for Phase 2
RegisterGroupsInOperatorGrid (Phase 2 and 3) 0xE73842AEbEC99Dacf2aAEec61409fD01A033f478 lidofinance/easy-track@aa2f545 Easy Track factory for Phases 2/3
UpdateGroupsShareLimitInOperatorGrid (Phase 2 and 3) 0xf23559De8ab37fF7a154384B0822dA867Cfa7Eac lidofinance/easy-track@aa2f545 Easy Track factory for Phases 2/3
AlterTiersInOperatorGrid (Phase 2 and 3) 0x73f80240ad9363d5d3C5C3626953C351cA36Bfe9 lidofinance/easy-track@aa2f545 Easy Track factory for Phases 2/3
VaultsAdapter (contract code changes) 0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27 lidofinance/easy-track@aa2f545 Adapter used by factories
SetJailStatusInOperatorGrid 0x6a4f33F05E7412A11100353724Bb6a152Cf0D305 lidofinance/easy-track@aa2f545 Redeployed Easy Track factory
UpdateVaultsFeesInOperatorGrid 0xDfA0bc38113B6d53c2881573FD764CEEFf468610 lidofinance/easy-track@aa2f545 Redeployed Easy Track factory
ForceValidatorExitsInVaultHub 0x6F5c0A5a824773E8f8285bC5aA59ea0Aab2A6400 lidofinance/easy-track@aa2f545 Redeployed Easy Track factory
SocializeBadDebtInVaultHub 0xaf35A63a4114B7481589fDD9FDB3e35Fd65fAed7 lidofinance/easy-track@aa2f545 Redeployed Easy Track factory

Deployment parameters

Below are the key deployment parameters used for verification.

New PDG implementation

Component Address Parameters (constructor/proxy)
PDG implementation (new) 0xE78717192C45736DF0E4be55c0219Ee7f9aDdd0D Constructor args: 0x00000000, 0x0000000000000000000000000000000000000000000000000096000000000028, 0x0000000000000000000000000000000000000000000000000096000000000028, 0

New Easy Track factories (stVaults Committee)

Contract / factory Address Constructor parameters
stVaults Committee 0x18A1065c81b0Cc356F1b1C843ddd5E14e4AefffF Committee used by the factories below
VaultsAdapter (new) 0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27 committee=0x18A1065c81b0Cc356F1b1C843ddd5E14e4AefffF, lidoLocator=0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb, 0xFE5986E06210aC1eCC1aDCafc0cc7f8D63B3F977, 0.1 ETH
AlterTiersInOperatorGrid (new) 0x73f80240ad9363d5d3C5C3626953C351cA36Bfe9 committee=0x18A1065c81b0Cc356F1b1C843ddd5E14e4AefffF, lidoLocator=0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb, limit=1_000_000e18
RegisterGroupsInOperatorGrid (new) 0xE73842AEbEC99Dacf2aAEec61409fD01A033f478 committee=0x18A1065c81b0Cc356F1b1C843ddd5E14e4AefffF, lidoLocator=0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb, limit=1_000_000e18
UpdateGroupsShareLimitInOperatorGrid (new) 0xf23559De8ab37fF7a154384B0822dA867Cfa7Eac committee=0x18A1065c81b0Cc356F1b1C843ddd5E14e4AefffF, lidoLocator=0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb, limit=1_000_000e18
SetJailStatusInOperatorGrid (new) 0x6a4f33F05E7412A11100353724Bb6a152Cf0D305 committee=0x18A1065c81b0Cc356F1b1C843ddd5E14e4AefffF, vaultsAdapter=0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27
SocializeBadDebtInVaultHub (new) 0xaf35A63a4114B7481589fDD9FDB3e35Fd65fAed7 committee=0x18A1065c81b0Cc356F1b1C843ddd5E14e4AefffF, vaultsAdapter=0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27
ForceValidatorExitsInVaultHub (new) 0x6F5c0A5a824773E8f8285bC5aA59ea0Aab2A6400 committee=0x18A1065c81b0Cc356F1b1C843ddd5E14e4AefffF, vaultsAdapter=0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27
UpdateVaultsFeesInOperatorGrid (new) 0xDfA0bc38113B6d53c2881573FD764CEEFf468610 committee=0x18A1065c81b0Cc356F1b1C843ddd5E14e4AefffF, vaultsAdapter=0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27, lidoLocator=0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb, 1000, 0, 100

Dual Governance proposal (core Phase 2 activation)

  • 1.1. Revoke vaults.OperatorsGrid.Registry role a495a3428837724c7f7648cda02eb83c9c4c778c8688d6f254c7f3f80c154d55 on OperatorGrid 0xC69685E89Cefc327b43B7234AC646451B27c544d from old VaultsAdapter 0xe2DE6d2DefF15588a71849c0429101F8ca9FB14D
  • 1.2. Grant vaults.OperatorsGrid.Registry role a495a3428837724c7f7648cda02eb83c9c4c778c8688d6f254c7f3f80c154d55 on OperatorGrid 0xC69685E89Cefc327b43B7234AC646451B27c544d to new VaultsAdapter 0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27
  • 1.3. Revoke vaults.VaultHub.ValidatorExitRole role 2159c5943234d9f3a7225b9a743ea06e4a0d0ba5ed82889e867759a8a9eb7883 on VaultHub 0x1d201BE093d847f6446530Efb0E8Fb426d176709 from old VaultsAdapter 0xe2DE6d2DefF15588a71849c0429101F8ca9FB14D
  • 1.4. Grant vaults.VaultHub.ValidatorExitRole role 2159c5943234d9f3a7225b9a743ea06e4a0d0ba5ed82889e867759a8a9eb7883 on VaultHub 0x1d201BE093d847f6446530Efb0E8Fb426d176709 to new VaultsAdapter 0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27
  • 1.5. Revoke vaults.VaultHub.BadDebtMasterRole role a85bab4b576ca359fa6ae02ab8744b5c85c7e7ed4d7e0bca7b5b64580ac5d17d on VaultHub 0x1d201BE093d847f6446530Efb0E8Fb426d176709 from old VaultsAdapter 0xe2DE6d2DefF15588a71849c0429101F8ca9FB14D
  • 1.6. Grant vaults.VaultHub.BadDebtMasterRole role a85bab4b576ca359fa6ae02ab8744b5c85c7e7ed4d7e0bca7b5b64580ac5d17d on VaultHub 0x1d201BE093d847f6446530Efb0E8Fb426d176709 to new VaultsAdapter 0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27
  • 1.7. Update PredepositGuarantee proxy 0xF4bF42c6D6A0E38825785048124DBAD6c9eaaac3 implementation to 0xE78717192C45736DF0E4be55c0219Ee7f9aDdd0D
  • 1.8. Temporarily grant PausableUntilWithRoles.ResumeRole a79a6aede309e0d48bf2ef0f71355c06ad317956d4c0da2deb0dc47cc34f826c on PredepositGuarantee 0xF4bF42c6D6A0E38825785048124DBAD6c9eaaac3 to Agent 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c
  • 1.9. Unpause PredepositGuarantee 0xF4bF42c6D6A0E38825785048124DBAD6c9eaaac3
  • 1.10. Revoke PausableUntilWithRoles.ResumeRole a79a6aede309e0d48bf2ef0f71355c06ad317956d4c0da2deb0dc47cc34f826c on PredepositGuarantee 0xF4bF42c6D6A0E38825785048124DBAD6c9eaaac3 from Agent 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c
  • 1.11. Temporarily grant STAKING_CONTROL_ROLE a42eee1333c0758ba72be38e728b6dadb32ea767de5b4ddbaea1dae85b1b051f on Lido 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84 to Agent 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c
  • 1.12. Set max external ratio to 30% on Lido 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84
  • 1.13. Revoke STAKING_CONTROL_ROLE a42eee1333c0758ba72be38e728b6dadb32ea767de5b4ddbaea1dae85b1b051f on Lido 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84 from Agent 0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c

Lido DAO on-chain vote (what changes on-chain in the vote)

  • 1. Submit a Dual Governance proposal to activate Lido V3 Phase 2
  • 2. Remove old ALTER_TIERS_IN_OPERATOR_GRID_FACTORY 0xa29173C7BCf39dA48D5E404146A652d7464aee14 from Easy Track 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea
  • 3. Add new ALTER_TIERS_IN_OPERATOR_GRID_FACTORY 0x73f80240ad9363d5d3C5C3626953C351cA36Bfe9 to Easy Track 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea (permissions: operatorGrid.alterTiers 0xc69685e89cefc327b43b7234ac646451b27c544d54544bcb)
  • 4. Remove old REGISTER_GROUPS_IN_OPERATOR_GRID_FACTORY 0x194A46DA1947E98c9D79af13E06Cfbee0D8610cC from Easy Track 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea
  • 5. Add new REGISTER_GROUPS_IN_OPERATOR_GRID_FACTORY 0xE73842AEbEC99Dacf2aAEec61409fD01A033f478 to Easy Track 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea (permissions: operatorGrid.registerGroup, operatorGrid.registerTiers 0xc69685e89cefc327b43b7234ac646451b27c544de37a7c0bc69685e89cefc327b43b7234ac646451b27c544d552b91da)
  • 6. Remove old UPDATE_GROUPS_SHARE_LIMIT_IN_OPERATOR_GRID_FACTORY 0x8Bdc726a3147D8187820391D7c6F9F942606aEe6 from Easy Track 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea
  • 7. Add new UPDATE_GROUPS_SHARE_LIMIT_IN_OPERATOR_GRID_FACTORY 0xf23559De8ab37fF7a154384B0822dA867Cfa7Eac to Easy Track 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea (permissions: operatorGrid.updateGroupShareLimit 0xc69685e89cefc327b43b7234ac646451b27c544de52b6085)
  • 8. Remove old SET_JAIL_STATUS_IN_OPERATOR_GRID_FACTORY 0x93F1DEE4473Ee9F42c8257C201e33a6Da30E5d67 from Easy Track 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea
  • 9. Add new SET_JAIL_STATUS_IN_OPERATOR_GRID_FACTORY 0x6a4f33F05E7412A11100353724Bb6a152Cf0D305 to Easy Track 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea (permissions: vaults_adapter.setVaultJailStatus 0x28f9ac198c4e0fa6a9ad2c2f97cb38f1a3120f27285f591c)
  • 10. Remove old SOCIALIZE_BAD_DEBT_IN_VAULT_HUB_FACTORY 0x1dF50522A1D868C12bF71747Bb6F24A18Fe6d32C from Easy Track 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea
  • 11. Add new SOCIALIZE_BAD_DEBT_IN_VAULT_HUB_FACTORY 0xaf35A63a4114B7481589fDD9FDB3e35Fd65fAed7 to Easy Track 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea (permissions: vaults_adapter.socializeBadDebt 0x28f9ac198c4e0fa6a9ad2c2f97cb38f1a3120f2796c4d514)
  • 12. Remove old FORCE_VALIDATOR_EXITS_IN_VAULT_HUB_FACTORY 0x6C968cD89CA358fbAf57B18e77a8973Fa869a6aA from Easy Track 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea
  • 13. Add new FORCE_VALIDATOR_EXITS_IN_VAULT_HUB_FACTORY 0x6F5c0A5a824773E8f8285bC5aA59ea0Aab2A6400 to Easy Track 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea (permissions: vaults_adapter.forceValidatorExit 0x28f9ac198c4e0fa6a9ad2c2f97cb38f1a3120f2733eb1f1a)
  • 14. Remove old UPDATE_VAULTS_FEES_IN_OPERATOR_GRID_FACTORY 0x5C3bDFa3E7f312d8cf72F56F2b797b026f6B471c from Easy Track 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea
  • 15. Add new UPDATE_VAULTS_FEES_IN_OPERATOR_GRID_FACTORY 0xDfA0bc38113B6d53c2881573FD764CEEFf468610 to Easy Track 0xF0211b7660680B49De1A7E9f25C65660F0a13Fea (permissions: vaults_adapter.updateVaultFees 0x28f9ac198c4e0fa6a9ad2c2f97cb38f1a3120f27ed7139a7)

Implementation highlights (BLS + Oracle)

  • BLS library parity with CL deposit signature verification: the deployment includes improvements to the BLS library to better match consensus-layer expectations by failing explicitly on malformed deposit signature data during its verification. See the core reference: lidofinance/core@33f2f59.
  • Oracle fee reporting: aligned with a time-based (timestamp) model rather than block-number-based, improving correctness under missing-block conditions.

Tentative timeline

  • Jan 20: Phase 2 vote goes live on mainnet
  • ~Jan 29: expected enactment/execution window (assuming the vote and DG challenge period pass)
  • Post-enactment: PDG enabled on mainnet under the hardened implementation; UI + DeFi wrapper rollout continues

What’s next

  • Updated audit reports and a 3rd-party deployment verification note will be shared shortly in the thread before the vote starts
  • stVaults onboarding continues — Node Operators can apply by following the stVaults Node Operators Identification guide
  • We’ll keep monitoring Phase 2 in production and propose further parameter adjustments where needed

If you have questions, integration proposals, or co-marketing plans around the full launch, please reach out — happy to sync.

Happy building! :droplet: :blue_heart:

7 Likes