Skip to main content

Protocol levers

Lido V3 governance controls a set of configurable parameters across core pool, oracle, withdrawals, and stVaults. This page summarizes the primary on-chain levers, who can operate them, and provides concrete addresses for role holders.

Governance structure​

EntityAddressDescription
Aragon Voting0x2e59A20f205bB85a89C53f1936454680651E618eLDO token voting for protocol governance
Aragon Agent0x3e40D73EB977Dc6a537aF587D48316feE66E9C8cAragon DAO execution agent
Aragon ACL0x9895f0f17cc1d1891b6f18ee0b483b6f221b37bbAragon permission registry for AragonApp roles
Easy Track0xF0211b7660680B49De1A7E9f25C65660F0a13FeaOptimistic governance for routine operations
Easy Track EVMScript Executor0xFE5986E06210aC1eCC1aDCafc0cc7f8D63B3F977Executes Easy Track motions
Vaults Adapter0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27stVaults adapter that holds VaultHub/OperatorGrid roles
GateSeal Committee0x8772E3a2D86B9347A2688f9bc1808A6d8917760CEmergency pause signer for GateSeal contracts
Reseal Manager0x7914b5a1539b97Bd0bbd155757F25FD79A522d24Pause extension authority for GateSeal-paused contracts under DualGovernance veto escalated states

Upgradeability​

All protocol proxy admins are set to the Lido DAO Agent (0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c). Upgrades require a successful DAO vote.

Upgradeable core protocol proxies (mainnet):

ContractAddress
LidoLocator0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb
Lido0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84
Accounting0x23ED611be0e1a820978875C0122F92260804cdDf
StakingRouter0xFdDf38947aFB03C621C71b06C9C70bce73f12999
WithdrawalQueueERC7210x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1
WithdrawalVault0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f
Burner0xE76c52750019b80B43E36DF30bf4060EB73F573a
VaultHub0x1d201BE093d847f6446530Efb0E8Fb426d176709
PredepositGuarantee0xF4bF42c6D6A0E38825785048124DBAD6c9eaaac3
OperatorGrid0xC69685E89Cefc327b43B7234AC646451B27c544d

Upgradeable oracle proxies (mainnet):

ContractAddress
AccountingOracle0x852deD011285fe67063a08005c71a85690503Cee
ValidatorsExitBusOracle0x0De4Ea0184c2ad0BacA7183356Aea5B8d5Bf5c6e
LazyOracle0x5DB427080200c235F2Ae8Cd17A7be87921f7AD6c

Upgradeable staking module proxies (mainnet):

ContractAddress
Curated Node Operators Registry0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5
Simple DVT Node Operators Registry0xaE7B191A31f627b4eB1d4DaC64eaB9976995b433
Community Staking Module0xdA7dE2ECdDfccC6c3AF10108Db212ACBBf9EA83F
Community Staking Accounting0x4d72BFF1BeaC69925F8Bd12526a39BAAb069e5Da
Community Staking Parameters Registry0x9D28ad303C90DF524BA960d7a2DAC56DcC31e428
Community Staking Fee Distributor0xD99CC66fEC647E68294C6477B40fC7E0F6F618D0
Community Staking Fee Oracle0x4D4074628678Bd302921c20573EEa1ed38DdF7FB
Community Staking Strikes0xaa328816027F2D32B9F56d190BC9Fa4A5C07637f
Community Staking Exit Penalties0x06cd61045f958A209a0f8D746e103eCc625f4193

Lido (core pool)​

Key levers on the core pool contract Lido (0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84):

LeverMutatorsRoleRole registryRole adminHolder
Pause protocolstop()PAUSE_ROLEAragon ACLAragon AgentUnassigned
Resume protocolresume()RESUME_ROLEAragon ACLAragon AgentUnassigned
Staking limitssetStakingLimit(), removeStakingLimit()STAKING_CONTROL_ROLEAragon ACLAragon AgentUnassigned
External shares capsetMaxExternalRatioBP()STAKING_CONTROL_ROLEAragon ACLAragon AgentUnassigned

Roles marked as unassigned are intentionally left without holders. The DAO can assign them later through Aragon ACL governance; see the permissions transition guide for design context (prepared pre-V3 but still applicable on principles).

Emergency pause​

The GateSeal mechanism allows emergency pausing without a full DAO vote. GateSeal contracts can temporarily pause protected apps, while the Reseal Manager holds both the PAUSE_ROLE and RESUME_ROLE for pause extension.

For current GateSeal contracts and protected apps, see the GateSeal registry.

GateSeal pauses are time-limited; the Reseal Manager can extend a seal window, and resuming requires a DAO vote that unpauses the app.

Accounting and oracles​

LeverContractMutatorsRoleRole registryRole adminHolder
Consensus settingsAccountingOraclesetConsensusVersion(), setConsensusContract()MANAGE_CONSENSUS_VERSION_ROLE, MANAGE_CONSENSUS_CONTRACT_ROLEAccountingOracleAragon AgentUnassigned
Oracle report boundsOracleReportSanityCheckerVarious limit settersALL_LIMITS_MANAGER_ROLEOracleReportSanityCheckerAragon AgentUnassigned
LazyOracle sanityLazyOracleupdateSanityParams()UPDATE_SANITY_PARAMS_ROLELazyOracleAragon AgentUnassigned
Oracle daemon configOracleDaemonConfigsetConfig()CONFIG_MANAGER_ROLEOracleDaemonConfigAragon AgentUnassigned
VEB report data submissionValidatorsExitBusOraclesubmitReportData()SUBMIT_DATA_ROLEValidatorsExitBusOracleAragon AgentUnassigned

Oracle consensus​

Oracle reports are submitted through HashConsensus contracts:

OracleHashConsensus Address
AccountingOracle0xD624B08C83bAECF0807Dd2c6880C3154a5F0B288
ValidatorsExitBusOracle0x7FaDB6358950c5fAA66Cb5EB8eE5147De3df355a

StakingRouter and modules​

Key levers on StakingRouter (0xFdDf38947aFB03C621C71b06C9C70bce73f12999):

LeverMutatorsRoleRole registryRole adminHolder
Module registryaddStakingModule(), updateStakingModule(), setStakingModuleStatus()STAKING_MODULE_MANAGE_ROLEStakingRouterAragon AgentAragon Agent (0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c)
Module feessetStakingModuleFees()STAKING_MODULE_MANAGE_ROLEStakingRouterAragon AgentAragon Agent (0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c)
Withdrawal credentialssetWithdrawalCredentials()MANAGE_WITHDRAWAL_CREDENTIALS_ROLEStakingRouterAragon AgentUnassigned
Module unvettingdecreaseStakingModuleVettedKeysCountByNodeOperator()STAKING_MODULE_UNVETTING_ROLEStakingRouterAragon AgentDepositSecurityModule (0xfFA96D84dEF2EA035c7AB153D8B991128e3d72fD)

Active staking modules​

ModuleRegistry Address
Curated (NodeOperatorsRegistry)0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5
SimpleDVT0xaE7B191A31f627b4eB1d4DaC64eaB9976995b433
Community Staking (CSM)0xdA7dE2ECdDfccC6c3AF10108Db212ACBBf9EA83F

Withdrawals​

Key levers on WithdrawalQueueERC721 (0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1):

LeverMutatorsRoleRole registryRole adminHolder
PausepauseFor()PAUSE_ROLEWithdrawalQueueERC721Aragon AgentGateSeal Withdrawal Queue (0x8A854C4E750CDf24f138f34A9061b2f556066912), Reseal Manager (0x7914b5a1539b97Bd0bbd155757F25FD79A522d24)
Resumeresume()RESUME_ROLEWithdrawalQueueERC721Aragon AgentReseal Manager (0x7914b5a1539b97Bd0bbd155757F25FD79A522d24)
Bunker modeonOracleReport()ORACLE_ROLEWithdrawalQueueERC721Aragon AgentAccountingOracle (0x852deD011285fe67063a08005c71a85690503Cee)

stVaults (VaultHub + OperatorGrid)​

VaultHub​

Key levers on VaultHub (0x1d201BE093d847f6446530Efb0E8Fb426d176709):

LeverMutatorsRoleRole registryRole adminHolder
Vault connectionsconnectVault(), updateConnection(), disconnect()VAULT_MASTER_ROLEVaultHubAragon AgentUnassigned
RedemptionssetLiabilitySharesTarget()REDEMPTION_MASTER_ROLEVaultHubAragon AgentUnassigned
Bad debt handlingsocializeBadDebt(), internalizeBadDebt()BAD_DEBT_MASTER_ROLEVaultHubAragon AgentVaults Adapter (0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27)
Forced exitsforceValidatorExit()VALIDATOR_EXIT_ROLEVaultHubAragon AgentVaults Adapter (0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27)
PausepauseFor()PAUSE_ROLEVaultHubAragon AgentGateSeal VaultHub+PDG (0x881dAd714679A6FeaA636446A0499101375A365c), Reseal Manager (0x7914b5a1539b97Bd0bbd155757F25FD79A522d24)
Resumeresume()RESUME_ROLEVaultHubAragon AgentReseal Manager (0x7914b5a1539b97Bd0bbd155757F25FD79A522d24)

OperatorGrid​

Key levers on OperatorGrid (0xC69685E89Cefc327b43B7234AC646451B27c544d):

LeverMutatorsRoleRole registryRole adminHolder
Group registrationregisterGroup(), updateGroupShareLimit()REGISTRY_ROLEOperatorGridAragon AgentEasy Track EVMScript Executor (0xFE5986E06210aC1eCC1aDCafc0cc7f8D63B3F977), Vaults Adapter (0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27)
Tier managementregisterTiers(), alterTiers()REGISTRY_ROLEOperatorGridAragon AgentEasy Track EVMScript Executor (0xFE5986E06210aC1eCC1aDCafc0cc7f8D63B3F977), Vaults Adapter (0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27)
Vault feesupdateVaultFees()REGISTRY_ROLEOperatorGridAragon AgentEasy Track EVMScript Executor (0xFE5986E06210aC1eCC1aDCafc0cc7f8D63B3F977), Vaults Adapter (0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27)
Jail statussetVaultJailStatus()REGISTRY_ROLEOperatorGridAragon AgentEasy Track EVMScript Executor (0xFE5986E06210aC1eCC1aDCafc0cc7f8D63B3F977), Vaults Adapter (0x28F9Ac198C4E0FA6A9Ad2c2f97CB38F1A3120f27)

Dual Governance​

Lido V3 includes a Dual Governance system allowing stETH holders to veto DAO decisions:

ComponentAddress
Dual Governance0xC1db28B3301331277e307FDCfF8DE28242A4486E
Emergency Protected Timelock0xCE0425301C85c5Ea2A0873A2dEe44d78E02D2316
Veto Signaling Escrow0x165813A31446a98c84E20Dda8C101BB3C8228e1c
Emergency Activation Committee0x8B7854488Fde088d686Ea672B6ba1A5242515f45
Emergency Execution Committee0xC7792b3F2B399bB0EdF53fECDceCeB97FBEB18AF

References​