Solos

StakeWise Solos smart contract details.

The Solos contract is an entry point for deposits into StakeWise Solo. This contract stores ETH collected from the users before it is sent to the ETH2 Validator Registration Contract.

The contract is not upgradable to prevent StakeWise from unilaterally changing the withdrawal credentials through the upgrade mechanism.

Add Deposit

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.

Cancel Deposit

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.

Register validators

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 generates deposit data for every validator and initiates validator registration

The 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 Pool and 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.