Comment on page


StakeWise PoolValidators smart contract details.
The PoolValidators contract keeps track of the pool validators' deposit data and facilitates the onboarding of external node operators into StakeWise.
Interactions with the PoolValidators contract are limited only to the addresses included in the StakeWise governance multisig & the Oracles contract.

Add Operator

PoolValidators is a contract that enables multiple node operators to host the protocol's validators in exchange for a share of their income.
To get on the Operators list, a node operator must generate deposit data for the number of validators it is planning to run and submit the merkle root of this data, along with the merkle proof, to be approved by the protocol governance (e.g. DAO or multisig). More details can be found in the node operator onboarding guide.
To approve the node operator, governance (or Admin) must call the addOperator function of the PoolValidators contract, which requires passing the address of the node operator, a merkle root of the deposit data for all the keys, as well as its merkle proof.
Once approved, the node operator will be eligible for the allocations of ETH from the Pool contract to the validators it has prepared to run.
The same process is applied to extending the number of validator keys.

Commit Operator

By calling the commitOperator function in the PoolValidators contract, the node operator that has been added to the Operators list by the Admin will signal to the Oracles about its readiness to host the validators. The Oracles will not allocate any ETH from the Pool contract to the node operator's keys until commitOperator has been called.

Remove Operator

To remove an operator from the Operators list, DAO or the operator itself must call the removeOperator function of the PoolValidators contract, which requires passing only the address of the node operator.
Once removed, the node operator will no longer receive new allocations of ETH.

Register Validator

When there is 32 ETH or more collected in the Pool contract, users with an Oracle role can register a new validator. Oracles are automated entities that run off-chain and listen to the Pool's events. As soon as there is enough ETH collected, the following sequence of events occurs:
  1. 1.
    Oracles will submit a vote containing the next deposit data (previously registered by the Operators using the StakeWise CLI) to the Oracles contract.
  2. 2.
    The Oracles contract will call the registerValidator function in the PoolValidators contract to verify the deposit data is contained in the operator's merkle root that has been submitted by the operator during the application process. This is necessary to ensure that the ETH allocations are given to the correct node operators and that the ETH allocations are made only to keys with correct withdrawal credentials.
  3. 3.
    Upon successful approval of submitted information, PoolValidators contract will call the registerValidator function in the Pool contract to register the validator by sending ether and the verified deposit data to the ETH2 Validator Registration Contract.
It is also possible to create multiple validators in one batch if there is enough ether collected.
Note that the StakeWise Permissioned Pool uses its own withdrawal credentials, which point to a PoolEscrow contract (i.e. an ETH1 address) and remain the same for every Pool's validator.
Last modified 1yr ago