Simple DVT release

Lido DAO contributors are preparing for Simple DVT release on the mainnet (you can see details in Staking Router Module Proposal: Simple DVT).

This a post describing overall technical design and further on-chain steps to make it live.

The “Simple DVT” is a new module that will utilize Distributed Validator Technology (DVT) on mainnet through Obol Network and SSV Network implementations. This module will be referred to as the “Simple DVT” module, due to simplified reward management scheme, manual coordination and curation required to adopt this early-stage technology. Its overall design outlined in the last post and the audit reports can be found here (Simple DVT app (same implementation as Node Operators Registry), Easy Track factories, SSV module, Obol module).

DVT is an approach to validator security that spreads out key management and signing responsibilities across multiple parties, to reduce single points of failure, and increase validator resiliency. You can read more details about DVT technology here.

By accommodating a more extensive range of Node Operators, this technology significantly amplifies the network’s decentralization, distribution, and resilience. New module opens doors for solo stakers, community stakers, existing node operators, and other staking organizations.

New module code is absolutely the same that is used in the Curated Node Operators Registry module. New module will consist of clusters (operators), operated by Obol and SSV.

Obol Labs specializes in researching and developing software for public blockchain networks, with a particular emphasis on proof-of-stake infrastructure. Their team focuses on key areas such as Internet Bonds, Distributed Validator Technology, and Multi-Operator Validation.

SSV offers a completely decentralized, open-source Ethereum staking ssv.network, utilizing Secret Shared Validator (SSV) technology. SSV, also referred to as Distributed Validator Technology (DVT).

Obol audits: https://obol.tech/charon_quantstamp_audit.pdf

SSV audits: ssv-network/contracts/audits/2023-30-10_Quantstamp_v1.0.2.pdf at v1.0.2 · bloxapp/ssv-network · GitHub

Reward splitters audit (Obol): obol-splits/audit at main · ObolNetwork/obol-splits · GitHub

Management

Since the addition of a new module significantly increases the number of node operators, the question arose about the efficient solution to operational tasks such as adding, removing, activating, and deactivating node operators, changing node operator names, reward addresses, node operator managers, and adjusting limits. To address this, Lido contributors developed and deployed a set of new factories for Easy Track.

The Simple DVT Module Committee (SDVTMC) is a multi-sig that has the rights and is responsible for creating and executing Easy Track motions specifically for the Simple DVT Module that can create new clusters, activate and deactivate existing clusters, raise and lower cluster key limits, and change cluster manager and reward addresses.

SDVTMC multi-sig address is 0x08637515E85A4633E23dfc7861e2A9f53af640f7

Please refer to the Simple DVT committee post for more details.

Preliminary work

Some components of this update, like Simple DVT app proxy and related Easy Track factories have been deployed beforehand.

Components:

Simple DVT app proxy: 0xaE7B191A31f627b4eB1d4DaC64eaB9976995b433
(The implementation (0x8538930c385C0438A357d2c25CB3eAD95Ab6D8ed) from Node Operators Registry is used)

Easy Track trusted caller: 0x08637515E85A4633E23dfc7861e2A9f53af640f7
(This is Multisig for a Simple DVT Committee, who has right to create Easy Track motions)

Easy Track EVM Script factories:

  • AddNodeOperators: 0xcAa3AF7460E83E665EEFeC73a7a542E5005C9639
    • Provides functionality to add Simple DVT Clusters (Node Operators in terminology of Node Operators registry module) via Easy Track Motions
  • ActivateNodeOperators: 0xCBb418F6f9BFd3525CE6aADe8F74ECFEfe2DB5C8
    • Factories provides functionality to activate Simple DVT Clusters (Node Operators in terminology of Node Operators registry module) via Easy Track Motions
  • DeactivateNodeOperators: 0x8B82C1546D47330335a48406cc3a50Da732672E7
    • Provides functionality to deactivate Simple DVT Clusters (Node Operators in terminology of Node Operators registry module) via Easy Track Motions
  • SetVettedValidatorsLimits: 0xD75778b855886Fc5e1eA7D6bFADA9EB68b35C19D
    • Provides functionality to set vetted validator keys limit for Simple DVT Clusters (Node Operators in terminology of Node Operators registry module) via Easy Track Motions
  • SetNodeOperatorNames: 0x7d509BFF310d9460b1F613e4e40d342201a83Ae4
    • Provides functionality to change node operator names for Simple DVT Clusters (Node Operators in terminology of Node Operators registry module) via Easy Track Motions
  • SetNodeOperatorRewardAddresses: 0x589e298964b9181D9938B84bB034C3BB9024E2C0
    • Provides functionality to set reward addresses for Simple DVT Clusters (Node Operators in terminology of Node Operators registry module) via Easy Track Motions
  • ChangeNodeOperatorManagers: 0xE31A0599A6772BCf9b2bFc9e25cf941e793c9a7D
    • Provides functionality to change manager address for Simple DVT Clusters (Node Operators in terminology of Node Operators registry module) via Easy Track Motions
  • UpdateTargetValidatorLimits: 0x41CF3DbDc939c5115823Fba1432c4EC5E7bD226C
    • Provides functionality to change target validator limits for Simple DVT Clusters (Node Operators in terminology of Node Operators registry module) via Easy Track Motions

New Easy Track factories were audited by Statemind. Please read the audit report for more information.

Connection of new factories to Easy Track will be made as part of the next on-chain vote.

Description of the voting actions

Next step is to start an on-chain vote that adds a new Simple DVT module to the Staking Router and adds new Easy Track factories for operator’s management.

I. Create new Aragon DAO Application Repo for Simple DVT

  1. Create new Aragon DAO Application Repo for Simple DVT app
    Name of the app = simple-dvt
    Version = 1.0.0
    Implementation address: 0x8538930c385C0438A357d2c25CB3eAD95Ab6D8ed
    Content URI = ipfs:QmaSSujHCGcnFuetAPGwVW5BegaMBvn5SCsgi3LSfvraSo (hex-encoded: 0x697066733a516d615353756a484347636e4675657441504777565735426567614d42766e355343736769334c5366767261536f)
    Hex-encoded values can be checked with any hexadecimal to ASCII converter.

II. Setup and initialize Simple DVT module as new Aragon app

  1. Setup Simple DVT as Aragon DAO app
    This action installs the Simple DVT Aragon application with the same contract implementation as the NodeOperatorsRegistry.

  2. Initialize of Simple DVT module with the following parameters
    Module Type = curated-onchain-v1 (hex-encoded: 0x637572617465642d6f6e636861696e2d76310000000000000000000000000000)
    Stuck Penalty Delay = 432000 (5 days - the same as in Curated Module)

III. Add Simple DVT module to StakingRouter

  1. Create and grant permission STAKING_ROUTER_ROLE on Simple DVT module for StakingRouter
    This is necessary for the Simple DVT module to function as a staking module

  2. Grant REQUEST_BURN_SHARES_ROLE on Burner for Simple DVT module
    This role is required for ability to burn stETH tokens in case of operator’s penalties, you can read more here

  3. Add Simple DVT module to StakingRouter Lido: Staking Router | Address 0xFdDf38947aFB03C621C71b06C9C70bce73f12999 | Etherscan
    This action finally sets up new Simple DVT module contract to the StakingRouter as the second module.
    Simple DVT module parameters was announced in the initial Simple DVT proposal:

  • Target share: 50 (0.5% of total stake)
  • Module fee: 800 (8%)
  • Treasury fee: 200 (2%)

IV. Grant permissions to EasyTrackEVMScriptExecutor to make operational changes to Simple DVT module

  1. Create and grant permission MANAGE_NODE_OPERATOR_ROLE on Simple DVT module for EasyTrackEVMScriptExecutor
    This one and next 3 actions are needed to setup permissions required for Easy Track to manage operational tasks on the Simple DVT module

  2. Create and grant permission SET_NODE_OPERATOR_LIMIT_ROLE on Simple DVT module for EasyTrackEVMScriptExecutor

  3. Create and grant permission MANAGE_SIGNING_KEYS on Simple DVT module for EasyTrackEVMScriptExecutor

  4. Grant STAKING_ROUTER_ROLE on Simple DVT module for EasyTrackEVMScriptExecutor

V. Add Easy Track EVM script factories for Simple DVT module to Easy Track registry

  1. Add AddNodeOperators EVM script factory with address 0xcAa3AF7460E83E665EEFeC73a7a542E5005C9639

  2. Add ActivateNodeOperators EVM script factory with address 0xCBb418F6f9BFd3525CE6aADe8F74ECFEfe2DB5C8

  3. Add DeactivateNodeOperators EVM script factory with address 0x8B82C1546D47330335a48406cc3a50Da732672E7

  4. Add SetVettedValidatorsLimits EVM script factory with address 0xD75778b855886Fc5e1eA7D6bFADA9EB68b35C19D

  5. Add UpdateTargetValidatorLimits EVM script factory with address 0x41CF3DbDc939c5115823Fba1432c4EC5E7bD226C

  6. Add SetNodeOperatorNames EVM script factory with address 0x7d509BFF310d9460b1F613e4e40d342201a83Ae4

  7. Add SetNodeOperatorRewardAddresses EVM script factory with address 0x589e298964b9181D9938B84bB034C3BB9024E2C0

  8. Add ChangeNodeOperatorManagers EVM script factory with address 0xE31A0599A6772BCf9b2bFc9e25cf941e793c9a7D

VI. Update Oracle Report Sanity Checker parameters

  1. Grant MAX_ACCOUNTING_EXTRA_DATA_LIST_ITEMS_COUNT_ROLE to the Lido DAO Agent on OracleReportSanityChecker contract

  2. Grant MAX_NODE_OPERATORS_PER_EXTRA_DATA_ITEM_COUNT_ROLE
    to the Lido DAO Agent on OracleReportSanityChecker contract
    This makes possible to set sanity checker parameter values (see next actions)

  3. Set maxAccountingExtraDataListItemsCount sanity checker parameter to 4
    This will allow to report extra data for 2 modules in 3rd phase of the accounting oracle report simultaneously

  4. Set maxNodeOperatorsPerExtraDataItemCount sanity checker parameter to 50
    Limiting the number of operators guarantees a successful oracle report within the block gas limit

Onchain vote to be announced soon, please stay tuned for updates.

19 Likes

Can’t wait to see Simple DVT module live on the mainnet. I believe it will not only bring net new Node Operators to the Lido validator set, but also will create a solid foundation for the upcoming DVT-native modules.

Do you have a rough estimation of the net new Node Operators number that Simple DVT will have?

7 Likes

Thanks for this update @infloop! Very excited to see more information on the deployment and looking forward to hopefully seeing the module live on mainnet shortly.

Can’t wait to see Simple DVT module live on the mainnet. I believe it will not only bring net new Node Operators to the Lido validator set, but also will create a solid foundation for the upcoming DVT-native modules.
Do you have a rough estimation of the net new Node Operators number that Simple DVT will have?

@dgusakov while it will very much depends on the LNOSG’s proposal and any related DAO discussion, it is estimated that under the current 0.5% of total Lido stake threshold for the module that 250-300 net-new Node Operators could be using the protocol to run validators within the first 3 months post launch.

In the Lido x Obol testnet for example, of 196 participants that finished the trial, 174 would be considered net-new, and of those over 100 are solo and community stakers.

The SSV trial is currently underway and expected to finish in the next 2-3 weeks, so there should be more information about the participants soon.

8 Likes

I’ve been optimistic for a very long time about the potential for DVT to not only broaden the node operator base for Lido (and Ethereum) but also meaningfully reduce barriers to entry for new participants, and Simple DVT looks set to do exactly just that and pave the way for more robust DVT-based modules in the future.

Big thanks to @infloop and the rest of the technical contributors who have worked to prepare the on-chain deployment for the Simple DVT module.

I look forward to the possibility of a significant amount of new node operators having the opportunity to use the Lido protocol and help decentralize the validator set further and mainnet battle-test DVT!

11 Likes

This is an amazing development indeed! The potential of Simple DVT and future DVT modules to expand the node operator set for Lido while reducing entry barriers is incredibly promising.

Huge kudos to all Obol and Lido technical and non-technical contributors for their efforts in preparing the on-chain mainnet deployment of the Simple DVT module. The success of the testing effort on Holesky was a testament to an incredible coordination feat among hundreds of operators.

We share the optimism for the significant influx of new node operators and the further decentralization of the validator set DVT modules will bring to Lido. Very excited to see the Simple DVT module on mainnet!

4 Likes

This is definitely a great step towards achieving Goal 2 out of the three proposed by @Hasu in the ‘GOOSE 2023 cycle: Lido DAO Goals for 2024 and 2024-2026’ proposal, which was approved by the Lido DAO ~four months ago (time flies). With recent discussions and announcements about institutions becoming more involved and starting to show interest in the industry—and, sooner rather than later, in Ethereum and staking—enhancing Lido’s widespread presence and adoption continues to be the optimal strategy for safeguarding against a potential future takeover by institutions.

Simple DVT is certainly an important milestone in that direction, advancing Lido’s node operator ecosystem to evolve into the most varied Ethereum staking service, one that ensures alignment with Ethereum’s core values while consistently achieving high performance benchmarks.

6 Likes

I would like to mention that Simple DVT app proxy contract (0xaE7B191A31f627b4eB1d4DaC64eaB9976995b433) was created through ‘newAppProxy’ (0xe156a8f3) method on the Kernel Lido DAO contract 0xb8FFC3Cd6e7Cf5a098A1c92F48009765B24088Dc,
creation tx: Ethereum Transaction Hash (Txhash) Details | Etherscan

and Simple DVT app proxy code (0xaE7B191A31f627b4eB1d4DaC64eaB9976995b433) is equal to currently used Node Operators registry app proxy code (0x55032650b14df07b85bF18A3a3eC8E0Af2e028d5):

4 Likes

Lido contributors are preparing for an on-chain vote to launch.
Planned date: today (Feb, 20th) at 14 UTC, but it may require more time for all checks!
Stay tuned

6 Likes

The voting has begun!
https://vote.lido.fi/vote/172
This is an important step towards decentralization and permissionless staking! The main phase will end on February 22nd at 14:23 UTC.
Make sure to participate in the voting. It’s a super important vote!

6 Likes

The vote 172 was enacted!
https://vote.lido.fi/vote/172
Thanks for the votes! This was truly amazing!

5 Likes