StakeWise PoolValidators smart contract details.
To get on the
Operatorslist, 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
addOperatorfunction 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
commitOperatorfunction in the PoolValidators contract, the node operator that has been added to the
Operatorslist by the Admin will signal to the
Oraclesabout its readiness to host the validators. The
Oracleswill not allocate any ETH from the Pool contract to the node operator's keys until
commitOperatorhas been called.
To remove an operator from the
Operatorslist, DAO or the operator itself must call the
removeOperatorfunction 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
Oraclerole can register a new validator.
Oraclesare 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:
- 2.The Oracles contract will call the
registerValidatorfunction 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.
It is also possible to create multiple validators in one batch if there is enough ether collected.