By calling the addDeposit function in the
Pool contract, the user will add ether to the Pool. The contract will mint
stETH tokens 1 to 1 with the deposited amount. For example, if you deposited 10 ether, you will get 10
stETH that represents the amount of ETH you staked in the StakeWise Pool.
When there is 32 ETH or more collected in the
Pool contract, a user with an
operator role can register a new validator. It is possible to create multiple validators in one batch if there is enough ether collected. In order to register a new validator, the
operator must generate the deposit data for every validator and submit it by calling the registerValidator function. Note that the StakeWise Pool will use its own withdrawal credentials, which remain the same for every Pool's validator. The withdrawal credentials are stored in the Settings contract and the private key is distributed among trusted entities and stored in the cold storage. This method of custody will be replaced with a different mechanism as soon as withdrawal to ETH1 addresses becomes supported.
operator runs in the cluster and listens to the
Pool's events. As soon as there is enough ETH collected, the
operator will spin up the validator nodes and register their deposit data through the
Pool contract. The Validators contract keeps track of all the validators registered by the
Solos contracts. It rejects registering the validators with already used public keys as there should be only one validator registration call per public key. The ETH2 Validator Registration Contract is an official contract for registering new validators.