The purpose of this document is to provide a collaborative resource to aid Node Operators participating in the Lido protocol to timely and effectively execute any updates to their infra or processes necessary for the smooth execution of the Lido V2 upgrade and resulting changes w.r.t. validator exit processing.
Expectations and requirements are detailed in the Lido Validator Exits Policy.
Validator exit requests are signaled to all Node Operators via the on-chain Ejector Oracle reports multiple times a day. Node Operators have a duty to set up infrastructure to capture signaled validator exit requests and process relevant (i.e. pertaining to their validators) requests as soon as possible.
Node Operators participating in the Lido curated registry have a duty to exit validators in a timely manner when they are requested to do so. The actual mechanisms for validators to be exited are at the discretion of Node Operators. Open source tooling is available to aid Node Operators in identifying signaled validator exit requests, as well as in processing these requests.
The below are excerpts from the policy. Please consult the full policy for details.
If Node Operators are processing signaled validator exit requests as soon as they are available, the shortest possible time for a validator exit request to go from “signaled” to “processed” will be somewhere within the range of a few minutes to an hour. With respect to validator exit performance, each Node Operator may be considered to have one of the below three statuses.
A node operator may be penalized if they have strictly more “stuck” validators than “refunded” validators (see reimbursement section of policy). While this condition is met, the Node Operator receives only half of the rewards and does not receive any new stake. Once the Node Operator manages to either withdraw the required number of validators or compensates for the lost validators and increases the “refunded” count through DAO voting, the node operator is considered under penalty for STUCK_PENALTY_DELAY seconds and then returns to the normal state. Rewards are automatically restored to normal, but in order to start to receive new stake, the Node Operator (or anyone else) have to call the permissionless method clearNodeOperatorPenalty.
<aside> 📄 Lido Validator Exits Policy Status: Ratified (2.0)
**SNOP - Validator Exits Policy 2.0 (IPFS), Discussion thread
</aside>
<aside> 📖 Please refer to the below guide ****for details and an overview of a reference ansible implementation
Link: NOTE (this replace the previous doc in notion)
What's Changing for Node Operators in Lido V2 - HackMD
</aside>
<aside> 🎥 See below for recordings of various deep-dive sessions!
</aside>
| Name | Description | Link |
|---|---|---|
| Validator Exits policy | The Lido Policy regarding exits | https://lido.mypinata.cloud/ipfs/QmZTMfmJZsYHz61f2FjhYdh5VNu6ifjYQJzYUGkysHs8Uu |
| Validator exits discussion | Governance forum post with all relevant discussions leading up to the policy | https://research.lido.fi/t/update-proposal-lido-on-ethereum-standard-node-operator-protocol-validator-exits/8722 |
| Goerli V2 PSA | Segment in NOM Community Call #4, introducing the steps necessary for the upcoming Goerli hardfork | https://www.youtube.com/watch?v=hms1Cln1Z0E&t=152s |
| New tooling works | Information on the works necessary to set up the suggested tooling | https://hackmd.io/jXgXjSIbQ1a_fUJeyUyL2A |
| Exits Deep-Dive #1 | Recording of one of the 2 technical deep-dives into exits. Aimed at Node operators. | https://drive.google.com/file/d/153KSfnWxH0x7V_xH961N7N38NICtcUPf/view?usp=share_link |
| Exits Deep-Dive #2 | Recording of one of the 2 technical deep-dives into exits. Aimed at Node operators. | https://drive.google.com/file/d/1RgNZEpNpwur5wYlv5TAzKQ4Q9CpsYctl/view?usp=share_link |
| Zheijiang exit walkthrough #1 | Recording of one of the 2 technical deep-dives showing validator exit flow. | Zoom recording (online) (passcode .K0V#wj9) |
| Google drive (video, chat transcript) | ||
| Zheijiang exit walkthrough #2 | Recording of one of the 2 technical deep-dives showing validator exit flow. | Zoom Recording (online) (passcode 5A9@i#=5) |
| Google drive (video, chat transcript) | ||
| Lido keys api repo | KAPI (Key API) repository | https://github.com/lidofinance/lido-keys-api |
| Lido Validator Ejector repo | Validator Ejector (eventlistening daemon) repository | https://github.com/lidofinance/validator-ejector |
| Lido CLI repo | https://github.com/lidofinance/lido-cli | |
| Dune - Lido Rewards & Penalties | Dashboard showing the individual rewards and penalties on an aggregated as well as a per operator basis. (Note: to use the parameters, you need to be logged in using any Dune account) | https://dune.com/lido/lido-node-operator-withdrawals |
| Dune - Status of Buffer and Exits | Status of the buffer and statistics of individual exits. | https://dune.com/lido/buffer-oracle-exits |
| Ejector Oracle Specs | Technical specs on how the Ejector Oracle will function | https://hackmd.io/PbUr-orDTAqH63F4-n8-pw?view#Ejector-oracle |