April 12, 2023
Staking withdrawals will be enabled through the Shanghai/Capella upgrade. This Ethereum network upgrade is expected to take place in the first half of 2023. More below
The Shanghai/Capella upgrade enables staking withdrawals on Ethereum, allowing people to unlock ETH staking rewards. Reward payments will automatically and regularly be sent to a provided withdrawal address linked to each validator. Users can also exit staking entirely, unlocking their full validator balance.
Reward payments are automatically processed for active validator accounts with a maxed out effective balance of 32 ETH.
Any balance above 32 ETH earned through rewards does not actually contribute to principal, or increase the weight of this validator on the network, and is thus automatically withdrawn as a reward payment every few days. Aside from providing a withdrawal address one time, these rewards do not require any action from the validator operator. This is all initiated on the consensus layer, thus no gas (transaction fee) is required at any step.
How did we get here?
Over the past few years Ethereum has undergone several network upgrades transitioning to a network secured by ETH itself, instead of energy-intensive mining as it once was. Participating in consensus on Ethereum is now known as "staking", as participants have voluntarily locked up ETH, placing it "at stake" for the ability to participate in the network. Users who follow the rules will be rewarded, while attempts to cheat can be penalized.
Since the launch of the staking deposit contract in November 2020, some brave Ethereum pioneers have voluntarily locked funds up to activate "validators", the accounts that have the right to formally attest to and propose blocks, following network rules.
Before the Shanghai update, you couldn't use or access your staked ETH. But now, you can opt-in to automatically receive your rewards into a provided account, and you can also withdraw your staked ETH whenever you want.
How do I prepare?
- Some users may have provided a withdrawal address when initially setting up their staking deposit—these users have nothing more they need to do
- The majority of stakers did not provide a withdrawal address on initial deposit, and will need to update their withdrawal credentials. The Staking Launchpad(opens in a new tab) has instructions on when and how to do this
You can enter your validator index number here to see if you still need to update your credentials
New stakers (not yet deposited)
- By default, new stakers looking to automatically enable reward payments and withdrawal functionality should provide an Ethereum withdrawal address they control when generating their validator keys using the Staking Deposit CLI tool
- This is not required at time of deposit, but will prevent the need to update these keys at a later date to unlock your funds
The Staking Launchpad will guide you through staking onboarding.Visit Staking Launchpad(opens in a new tab)
Providing a withdrawal address is a required step for any validator account before it will be eligible to have ETH withdrawn from its balance.
There is no threat to your funds in the meantime for not providing this. Failure to add withdrawal credentials will simply leave the ETH locked in the validator account as it has been until a withdrawal address is provided.
Exiting staking entirely
Providing a withdrawal address is required before any funds can be transferred out of a validator account balance.
Users looking to exit staking entirely and withdraw their full balance back must also sign and broadcast a "voluntary exit" message with validator keys which will start the process of exiting from staking. This is done with your validator client and submitted to your beacon node, and does not require gas.
The process of a validator exiting from staking takes variable amounts of time, depending on how many others are exiting at the same time. Once complete, this account will no longer be responsible for performing validator network duties, is no longer eligible for rewards, and no longer has their ETH "at stake". At this time the account with be marked as fully “withdrawable”.
Once an account is flagged as "withdrawable", and withdrawal credentials have been provided, there is nothing more a user needs to do aside from wait. Accounts are automatically and continuously swept by block proposers for eligible exited funds, and your account balance will be transferred in full (also known as a "full withdrawal") during the next sweep.
When are staking withdrawals enabled?
Withdrawal functionality will be enabled through a two-part simultaneous network upgrade, Shanghai + Capella.
Withdrawal functionality will be enabled in the upcoming Shanghai upgrade scheduled for April 12, 2023. This enables previously staked ETH to be deposited into execution layer accounts, closing the loop on staking liquidity, and taking one more step on Ethereum’s journey towards building a sustainable, scalable, secure decentralized ecosystem.
Shanghai marks the end of an undefined lock-up period for ETH staking. Users will be free to:
- Stake their ETH
- Earn ETH rewards that will be distributed automatically
- Un-stake their ETH to regain full access to their entire balance
- And of course, re-stake to sign back up and start earning more rewards
For the Shanghai upgrade to take effect, a simultaneous upgrade to the Beacon Chain must take place named Capella. Node operating stakers should stay tuned to client communication channels to be alerted of upcoming client updates to be fully prepared for the upgrade scheduled for April 12, 2023.
Stakers who need to update their validator withdrawal keys can broadcast this message once the Capella upgrade has taken place.
Subscribe to the EF Blog(opens in a new tab) to receive email notifications for the latest protocol announcements.Test your setup on Goerli launchpad(opens in a new tab)
How do withdrawal payments work?
Whether a given validator is eligible for a withdrawal or not is determined by the state of the validator account itself. No user input is needed at any given time to determine whether an account should have a withdrawal initiated or not—the entire process is done automatically by the consensus layer on a continuous loop.
More of a visual learner?
Check out this explanation of Ethereum staking withdrawals by Finematics:
When a validator is scheduled to propose the next block, it is required to build a withdrawal queue, of up to 16 eligible withdrawals. This is done by originally starting with validator index 0, determining if there is an eligible withdrawal for this account per the rules of the protocol, and adding it to the queue if there is. The validator set to propose the following block will pick up where the last one left off, progressing in order indefinitely.
Now instead of 1 through 12, imagine the clock has 0 through N (the total number of validator accounts that have ever been registered on the Beacon Chain, over 500,000 as of Jan 2023).
The hand on the clock points to the next validator that needs to be checked for eligible withdrawals. It starts at 0, and progresses all the way around without skipping any accounts. When the last validator is reached, the cycle continues back at the beginning.
Checking an account for withdrawals
While a proposer is sweeping through validators for possible withdrawals, each validator being checked is evaluated against a short series of questions to determine if a withdrawal should be triggered, and if so, how much ETH should be withdrawn.
- Has a withdrawal address been provided? If no withdrawal address has been provided, the account is skipped and no withdrawal initiated.
- Is the validator exited and withdrawable? If the validator has fully exited, and we have reached the epoch where their account is considered to be "withdrawable", then a full withdrawal will be processed. This will transfer the entire remaining balance to the withdrawal address.
- Is the effective balance maxed out at 32? If the account has withdrawal credentials, is not fully exited, and has rewards above 32 waiting, a partial withdrawal will be processed which transfers only the rewards above 32 to the user's withdrawal address.
There are only two actions that are taken by validator operators during the course of a validator's life cycle that influence this flow directly:
- Provide withdrawal credentials to enable any form of withdrawal
- Exit from the network, which will trigger a full withdrawal
This approach to staking withdrawals avoids requiring stakers to manually submit a transaction requesting a particular amount of ETH to be withdrawn. This also means there is no gas (transaction fee) required, and withdrawals also do not compete for existing execution layer block space.
How frequently will I get my staking rewards?
A maximum of 16 withdrawals can be processed in a single block. At that rate, 115,200 validator withdrawals can be processed per day (assuming no missed slots). As noted above, validators without eligible withdrawals will be skipped, decreasing the time to finish the sweep.
Expanding this calculation, we can estimate the time it will take to process a given number of withdrawals:
|Number of withdrawals||Time to complete|
As you see this slows down as more validators are on the network. An increase in missed blocks could slow this down proportionally, but this will generally represent the slower side of possible outcomes.
Frequently asked questions
- Staking Launchpad Withdrawals(opens in a new tab)
- EIP-4895: Beacon chain push withdrawals as operations(opens in a new tab)
- Ethereum Cat Herders - Shanghai(opens in a new tab)
- PEEPanEIP #94: Staked ETH Withdrawal (Testing) with Potuz & Hsiao-Wei Wang(opens in a new tab)
- PEEPanEIP#68: EIP-4895: Beacon chain push withdrawals as operations with Alex stokes(opens in a new tab)
- Understaning Validator Effective Balance(opens in a new tab)