Partial withdrawals after the Shanghai fork
Modelling the distribution of rewards by validator cohort.
A date has yet to be set, but the Shanghai hard fork is looming.
Discussions around sell pressure are trendy again, yet no one has the data to properly dive into the topic. My original modelling is dated, but continues to be cited, therefore this acts as an update.
This writing assumes basic knowledge of the mechanics behind withdrawals. If you are not familiar with the credential classes discussed below, they are described in great detail in the two resources that follow.
The key changes since my original modelling are:
The control flow for switching between the two classes of withdrawal credentials has been clarified.
All withdrawals will require 0x01 credentials, which were not set by early validators.
The operation to add 0x01 withdrawal credentials is rate limited to 16 operations per block.
Partial withdrawals will happen automatically for all 0x01 credentialed validators, with the network processing a maximum of 16 partial withdrawals per block.
The process for full withdrawals remains unchanged with the exception that a 0x00 validator must set their 0x01 credentials before their withdrawal will process.
For additional information about the process I recommend the following resources:
Christine Kim’s detailed write-up
Who Has Which Credentials?
Most analysts assume that the two classes of validators (0x00, 0x01) have uniform characteristics, but this is a big mistake. When we look at deposits to the beacon chain in the figure below, we see that all genesis validators were created without setting 0x01 credentials. This skews the data heavily.
To this day, about 20% of new validators do not set 0x01 credentials. These are likely individuals using outdated guides and centralized institutions that have not updated their procedures.
The heaviest adopter of the 0x01 credentialing system has been Lido; the liquid staking provider has 88% of their withdrawal credentials set and controls over 60% of all validators that are set up to receive automatic withdrawals. To the naive observer, this may trigger flashbacks of debates around centralization, but in this case, Lido's heavy adoption of the standard is a positive outcome for the network.
Since Lido will be looping their rewards back into new validators to optimize the yield of their staking derivative, the heavy adoption will have the effect of clogging the partial withdrawal queue and decreasing the magnitude of the initial surge of withdrawals.
In addition to being the heaviest adopter of 0x01 credentials, the majority of Lido's validators were activated early, with the largest surge occurring in the spring of 2022 before their staking derivative began trading at a discount. As a result, the average Lido 0x01 validator is older than the average 0x01 validator and holds an outsized amount of automatically withdrawable rewards.
Taking a quotient of accumulated rewards and validator counts, we see in the figure below that the average Lido 0x01 credentialed validator has accumulated 1.23 ETH of rewards, while the average non-Lido 0x01 validator has only accumulated 1.06 ETH.
Validators with 0x00 credentials are heavily skewed by genesis validators who have been accumulating rewards for over two years. The average validator of this class has 2.47 ETH of rewards eligible for partial withdrawals, while the best performing validator had earned 4.9 ETH of base rewards as of February 4, 2023.
Post-Shanghai
When withdrawals are enabled, partial withdrawals will begin processing; performing a sweep of validators and distributing rewards to those in the 0x01 pool. In tandem, validators in the 0x00 pool who have requested to switch their credentials from 0x00 to 0x01 will begin to fill the pool changing the composition over time. Both of these operations happen at a rate of 16 validators per block.