Understanding Ethereum Validator Withdrawals
The Ethereum network is undergoing a major upgrade known as Shanghai and Capella. These are the names of the upcoming Ethereum hard fork, with the former being the name of the fork on the execution client side and the latter being the upgrade name on the consensus layer client side. The included EIPs can be found on the Ethereum website.
One of the major new features that will be enabled after the hard fork is the ability to withdraw validators from the Ethereum beacon chain. Currently, individuals can lock 32 ETH to run a validator, which participates in the network's consensus. Withdrawal will give individuals the ability to stop running their validator, exit the network, and unlock their 32 ETH, along with any earned rewards.
There are two types of withdrawals: partial withdrawals and full withdrawals. In partial withdrawals, balances over 32 ETH (earned rewards) are withdrawn to an Ethereum address and can be spent immediately while the validator continues to participate in the beacon chain. In full withdrawals, the entire balance of the validator (32 ETH principle and any rewards) is unlocked and allowed to be spent after the exit and withdrawal mechanism is complete, and the validator will stop participating in the beacon chain.
The beacon chain validators contain a field known as withdrawal credentials, with the first two bytes of this credential referred to as the withdrawal prefix. This value can be either 0x00 or 0x01, set when the deposit is made using a deposit tool. Validators with 0x00 withdrawal credentials will not be able to withdraw immediately and will need to migrate to 0x01 before partial withdrawals, and full withdrawals are enabled. To check if your validator has a 0x00 or a 0x01 address, you can use the ethdo tool or check a beacon chain block explorer such as beaconcha.in.
If you used the --eth1_withdrawal_address flag when making your initial deposit, your withdrawal credentials will already be in the 0x01 format. However, if you did not make your initial deposit with this data, you will need to submit the BLSToExecutionChange message to upgrade your credentials. Partial withdrawals happen automatically if your withdrawal credentials are set to 0x01 and point to a valid Ethereum address. However, full withdrawals do not happen automatically and require a signed message from your validator client to initiate the exit process. The exit process details may vary depending on the client you are using.
The current proposal for daily withdrawal limits post Shanghai is that partial withdrawals of any balances above 32 ETH are automatic and round-robin, averaging one sweep/week. Full withdrawals are possible via an exit, which places the validator into the exit queue. The exit queue depends on the size of the validator set in the network, and this limit exists to regulate the rate of exit and entry into the beacon chain validator set. Partial and full withdrawals will not be charged gas fees, as they are considered to be balance increases instead of transactions.
The automatic balance withdrawal will go to the Ethereum address that has been configured as the withdrawal address. If you are using a legacy withdrawal credential 0x00, the balance will not be withdrawn until you perform a migration to 0x01 credentials.
In conclusion, the upcoming Ethereum hard fork of Shanghai and Capella will bring many exciting changes to the Ethereum network, including the ability to withdraw validators from the Ethereum beacon chain. Whether you are a validator or an Ethereum enthusiast, it is important to stay informed and prepared for these changes, especially if you have a validator running on the network. Make sure to follow the official Ethereum website and my substack for updates and further information.