Total ETH staked is now over 16M as we write this in late January. The amount of ETH staked every month since October 2022 has been increasing at a consistent rate. This constant inflow of ETH is reassuring for the long-term health of the ecosystem and has affirmed market confidence in the delivery of withdrawals (more on that later) and the utility of Ethereum.
Almost 1M ETH has been earned on the consensus layer as rewards for attestations and proposals. It’s easy to imagine that most stakers will want this ETH removed from their validators - however, what will they then do with it? We expect that Lido, Coinbase and Rocketpool will automatically re-stake their part, which accounts for ~40% of validators. However, that is speculation.
What is less and less speculative is the withdrawal delivery timeline:
Since November last year, the Ethereum core development teams have decided to focus the Shanghai/ Capella fork on enabling withdrawals and have pushed all other EVM upgrades to later releases. After a few devnets, a new public testnet will be launched at the beginning of February to allow the ecosystem to begin testing the tooling surrounding the core protocol changes. It will be an opportunity for staking operators, like Codefi Staking, to begin to verify their approach to the challenges that withdrawals may present.
The withdrawal specification has mostly been finalized. The key elements are:
Only validators with an Execution layer withdrawal address will be subject to withdrawal processes
The withdrawal processes detailed below are largely automatic. However, there is a constraint: for a validator to be eligible to participate in those processes, it must have used an Eth1 or 0x01 withdrawal credential when it was staked. This is basically an ordinary Ethereum execution layer account address. As we write this, approximately a third of validators have used an Eth1 address. The remainder all used the original specification of a BLS12-381 key or Eth2 for their withdrawal credential.
Solo or small stakers would’ve used the cli-deposit-tool from the Ethereum Foundation. Others might’ve used the BLS key that Ledger enabled on their Nano-X. Larger institutions perhaps asked their custodians or ran their own infrastructure/software to generate and secure this new kind of keys.
The Shanghai/Capella fork will enable stakers to convert their withdrawal key from Eth2 to Eth1. This can be done once and in one direction for the validator without affecting their active status. The holder of the withdrawal key must sign a simple payload and submit it to the appropriate endpoint of a consensus layer client. This is the first and only time, so far, that the protocol has required the BLS12 withdrawal key to actually sign something.
As per the design intention of Ethereum (decentralized and as distributed a network as possible), this process is relatively simple for a small staker running their own validators. For staking providers, however, it presents a bigger challenge around security and usability because of the separation of validator and withdrawal keys.
A validator has an Execution layer withdrawal address AND is active AND has a balance >32Eth: all excess will be automatically transferred to the withdrawal account on a regular basis (16 validators / slot)
This is the “skim” that we’ve all been talking about. Everything above 32 ETH will be removed from the validator account on the consensus layer and credited to the specified withdrawal address on the execution layer. The frequency of this action will be driven by the number of validators that meet the above criteria. The process will keep repeating for each validator in the active pool that matches the criteria of >32 ETH. The other point to note is that the excess will not be transferred in a transaction on the execution layer. It will be a change in state as per the coinbase account update for transaction priority fees like magic. If you navigate to etherscan.io to an address that is associated with a validator, you can see a new tab “Produced Blocks”. There you can see the fees that have been credited to the account due to block production.
If a validator has an Execution layer withdrawal address AND is Exited - the entire balance will be automatically transferred to the withdrawal account
As part of the same automated withdrawal process mentioned above, when it encounters a validator in the above state, then the whole balance is removed from the consensus layer into the specified execution layer account. What’s interesting is that submission of the voluntary exit message (VEM) is the critical step. Aside from slashing, that is the only way a validator can move from Active to Exited.
Again, the design focus of Eth2 is consistent - making this process simple and straightforward for the small or solo staker operating their own validators. For the staking provider, it creates focus on the access rights surrounding the generation and any storage of the VEM. It’s true: if there was a breach or mistake such that VEMs were submitted without the staker’s knowledge then the ETH balance can still only be withdrawn to the fixed withdrawal address. So, there is some comfort there.
After a challenging last quarter, I’m glad to say that our performance has recovered to our usual high standards - as you can see with our Lido sample. We have also initiated a platform-wide review to see how we can further improve our resilience and quality.
In addition to our platform review and withdrawals, we are also exploring new ways for us to enable customers to engage with our service. More to come on that in the near future.