The contract is not upgradable to prevent StakeWise from unilaterally changing the withdrawal credentials through the upgrade mechanism.
To create a solo validator, the user must have at least 32 ether on their balance. Together with the deposit amount, the user must also provide the withdrawal credentials that can be generated by following our guide. By calling addDeposit function in the
Solos contract, the user will be placed in the queue for validator registration. For every 32 ETH deposited by the user, a new validator will be created.
The user can cancel the deposit by calling the cancelDeposit function and withdraw deposited ether back if it did not move to the ETH2 Validator Registration Contract within a period of time specified by the withdrawalLockDuration variable (currently set at 1 day).
The time lock is needed for the
operator to have some time for registering the validator without the user disrupting the registration process. For example, a malicious user could send the transaction which would cancel the deposit and the
operator would lose gas by trying to register the canceled deposit.
When there are deposits in the
Solos 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 more than one deposit. In order to register a new validator, the
operator must generate the deposit data for every validator and submit it through the registerValidator function. The
operator cannot use the withdrawal credentials that are different from those submitted by the user, since the ETH2 Validator Registration Contract would reject the transaction.
operator runs in the cluster and listens to the
Solos' events. As soon as there is enough ETH collected, the
operator will spin up the validator nodes and register their deposit data through the
Solos 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 (VRC) is an official contract for registering new validators.