Comment on page
PoolValidators
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.
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.
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.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.

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.
Oracles
will submit a vote containing the next deposit data (previously registered by theOperators
using the StakeWise CLI) to the Oracles contract. - 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.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