Ethereum Withdrawals and Liquid Staking

Ethereum

March 3, 2023

In this blog post, we analyze unstaking mechanisms for liquid staking protocols and the role that the introduction of staking withdrawals on Ethereum will play in developing said mechanisms. We dive into three important examples of liquid staking providers: Lido, Stakewise, and Rocketpool.

Liquid staking: a quick review

In a previous blog post, our team described the notion of liquid staking, along with the different approaches that can be carried out to implement it. In general terms, liquid staking protocols allow users to lock an amount of ETH and mint a corresponding amount of liquid-staking derivative tokens xETH that can be freely traded. If held, the xETH tokens continue to pay staking rewards to their holders, either by increasing in quantity or accruing value with respect to ETH. As examples of liquid staking derivatives, we have stETH and wstETH (Lido), rETH (Rocketpool), and the token pair sETH2/rETH2 (Stakewise).

Let us recall the properties of liquid staking that may make it advantageous to a variety of parties in Ethereum over the native, solo-staking approach:

  • Solo staking requires users to stake in multiples of 32 ETH. In turn, liquid staking allows parties to stake as little or as much ETH as they want.
  • When solo staking, users must run their own node infrastructure or find a suitable node operator on their own. In the case of liquid staking, users delegate this problem to a third party through the liquid staking protocol.
  • Finally, as long as withdrawals are not available on Ethereum, solo stakers will not have access to their funds — i.e., their funds are illiquid. This is not the case for liquid stakers, who will hold some liquid-staking derivative xETH that can be sold or, in many cases, locked into DeFi protocols as collateral.

Withdrawals on Ethereum, a recap

On Ethereum, every validator needs to deposit 32 Ether and generate (i) a set of BLS keys (public and private key), which will be used to sign blocks and messages in the Beacon chain, and (ii) withdrawal credentials that will be used to claim back the deposit.

After the upcoming Shanghai/Capella hard fork, Ethereum validators will either:

  • Be able to exit the network and claim back their deposits (full withdrawals) or
  • Collect their rewards regularly and automatically(partial withdrawals).

According to the Ethereum Withdrawals FAQ site, for a validator to be eligible for collecting its rewards and claiming back its deposit, it should have a withdrawal credential with the prefix 0x01. A validator that holds a withdrawal credential with the prefix 0x00 will be able to change it to a 0x01-type after the fork.

For readers who want to dive deeper into the mechanisms and cryptography behind this, we have a technical blog post on the role of BLS signatures in withdrawals.

How withdrawals and liquid staking interact

Withdrawals become even more interesting when considering the interactions with liquid staking. Users must be able to turn their xETH back into ETH via their liquid staking provider directly — otherwise, their xETH would not hold any value. (We call this unstaking or redeeming ETH.) Although users are currently able to trade their liquid derivatives for ETH in the secondary markets, the stability of these trading rates is contingent upon the promise of an implementation of an unstaking mechanism in the future.

Where will the funds come from to do the above? Does the provider need to forcibly exit validators to make stakers whole? Which mechanism/algorithm is used for this purpose, and does it have a timeline specified for implementation? Considering that the specific mechanism must be created case-by-case for each liquid staking architecture, we now explore a few of these questions.

Important examples

We review the current state of affairs regarding unstaking for the largest liquid-staking providers on Ethereum at the time of writing — Lido, Stakewise, and Rocketpool.

Lido

In Lido, most of the withdrawal credentials are of type 0x01 and point to a smart contract address, which is controlled by Lido DAO. A small fraction of withdrawal credentials are of type 0x00 and point to a multisig wallet which means its keyshares are held by reputable members of the blockchain industry. This multisig mechanism is a vestige of a time when 0x01 withdrawal credentials were unavailable on Ethereum; therefore, a smart contract could not be selected as a withdrawal address when onboarding Lido validators. For more details, see the section “Transitioning custody to a smart contract” in Lido’s blog post “The Road to Trustless Liquid Staking”.

The upcoming fork will enable several changes to the Lido protocol, allowing Lido to accommodate validator withdrawals and enabling stETH holders to redeem their Ether.

We will describe some candidate proposals and discussions regarding how Lido will proceed with withdrawals as presented in **Lido on Ethereum. Withdrawals Landscape.

After the upcoming hard fork, the following changes will take place in Lido:

  • The validators that use 0x00-type credentials can change them to 0x01-type withdrawal credentials to collect partial rewards. A rotation message signing ceremony will take place before the hard fork to enable this change. As mentioned, most of the validators of Lido already hold 0x01-type credentials pointing to a Lido smart contract. It is estimated that in the first week, the partial rewards for Lido will be roughly 200,000 Ether.
  • stETH holders will be able to claim back their Ether according to a request-claim process. All the withdrawals requests submitted by stETH holders will be added to a queue and will be processed in order.

The request-claim process consists of the following steps:

  1. Request: The user sends the withdrawal request to the WithdrawalQueue contract locking the amount of stETH token it wants to withdraw. Note that this request cannot be canceled. This is important because a withdrawal request could cause the exit of a Lido validator.
  2. Fulfillment: The Lido ****protocol determines the request’s finalization time and the amount of Ether that corresponds to the locked stETH (stETH share redemption rate). After that, it burns the locked stETH and reserves the corresponding amount of Ether so the user can collect it.
  3. Claim: The user can claim the reserved amount of Ether at any time after the fulfillment.

The fulfillment phase consists of many components that should be carefully designed so that (i) honest users can claim back their Ether as fast as possible after they submit a withdrawal request, and (ii) malicious users are not able to “game’’ the withdrawal process for their own profit.

The Lido protocol should determine the following:

  1. Who will execute the fulfillment phase? One discussed approach is that the calculations needed for the fulfillment phase would be performed by the committee of oracles that is used now to transfer data from the Consensus layer to the Execution layer. These oracles could make the calculations and the aggregations of the data off chain and then report the outcome of the calculations to smart contracts. Moreover, another proposed feature is the Gatekeepers committee that can trigger the stop of the withdrawals in the protocol via multi-signatures in case of a catastrophic scenario that has not been predicted.
  2. Who will be the Lido validators that will exit so that their deposits can be used to accommodate the withdrawal requests? There are many discussions on the Lido research forum regarding the algorithm that will specify the order of the exits.
  3. The time of the finalization and the redemption rate of each request.

According to the current proposal, slashing of Lido validators (penalty imposed on validators when they do not comply with the Beacon chain rules) during the last 36 days will be crucial in how fast withdrawal requests will be accommodated. Depending on this metric, the protocol will enter one of two modes: turbo mode or bunker mode. During turbo mode, users’ requests will be finalized as fast as possible, whereas, in bunker mode, the users will incur an extra delay. Under current conditions, the bunker mode would be activated very rarely — specifically when Lido validators’ slashing during the last 36 days was more than 6 times higher than the largest simultaneous slashing Ethereum has ever experienced.

Apart from the mode, other factors that will affect the finalization time will be the amount of Ether in the buffer that comes from users’ deposits and the validators’ rewards from the Consensus and the Execution layer. The current proposal suggests that if there is enough Ether in the buffer and Lido is in turbo mode, the withdrawal request can be fulfilled immediately after the Lido oracle reports (approximately 1 to 24 hours after the request).

On the other hand, if there is no Ether in the buffer, even if Lido is in the turbo mode, there will be some delay so that Lido requests some validators to exit and uses their deposits to accommodate the pending withdrawal requests (for example, 3–4 days).

According to the current design, the redemption rate with which a withdrawal request will be fulfilled will depend on the stETH rebase that the Lido oracle reports after the withdrawal request. A stETH rebase is an algorithmic increase or decrease in the total supply of the tokens due to slashing or the rewards from the Consensus and Execution layer. Note that the redemption rate with which a withdrawal request is fulfilled cannot be higher compared to the redemption rate when the request was created. This happens because otherwise, users would have incentives to have their stETH tokens locked via withdrawal requests and deposit them back afterward.

StakeWise

StakeWise is a DeFi platform that enables users to earn rewards by staking their Ethereum deposits in a pool. StakeWise has improved its design in several iterations — v2 was launched in late 2020, and v3 is currently in internal testing (according to Discord discussions). Each version works with liquid staking tokens: we have v2’s sETH2 and rETH2, as well as v3’s osETH. The process of withdrawing your deposit and rewards from the platform will be different for each of these tokens and versions.

StakeWise also offers the option of (non-custodial) Solo Staking, which allows users to utilize the platform’s infrastructure and management tools to run their validators while using their own withdrawal credentials to manage their validator’s funds. This means that users do not have to rely on StakeWise to manage the withdrawal key, as with regular staking pools. For solo staking, users are not issued a liquid-staking derivative — withdrawal of these funds will be done via the native Ethereum mechanism since the user controls the respective key.

Let us now go back to analyzing the unstaking mechanisms for StakeWise v2 and v3.

StakeWise v2

Users who stake their ETH in the StakeWise pool receive sETH2 tokens representing their stake at a 1:1 ratio. sETH2 holders receive their corresponding staking rewards in the form of a secondary token — rETH2.

Currently, StakeWise manages the withdrawal key for funds in the pool by dividing it into multiple parts and using Shamir’s secret sharing to require a threshold of signatures to transfer balances back to the users. The withdrawal key parts are distributed among trusted entities and stored in cold storage as part of StakeWise’s Horcrux mechanism. Each entity stores its portion of the withdrawal key in cold storage.

If you wish to withdraw your deposits and rewards before Shanghai/Capella, you may exchange your sETH2 and rETH2 tokens for other assets in secondary markets. After Shanghai/Capella, StakeWise’s documentation states that users may redeem their ETH deposit and reward by directly burning their sETH2 and rETH2 tokens on the StakeWise app via a forthcoming upgrade. The specifics behind this mechanism have not been specified — in particular, it is unknown whether there will be a queue for unstaking or how long the process will take in practice.

StakeWise v3

v3 is a new iteration of StakeWise’s design which aims to combat staking centralization. The proposed model aims to provide a free market of vaults run by permissionless node operators, such that users can choose which vault to delegate their stake to in exchange for a fee of the staking proceeds. To help users make an informed choice, vaults are ranked by their performance, profitability, and centralization risk. For the specifics behind this design, check StakeWise’s v3 announcement.

With the upcoming v3 release, the dual token model will shift to a single token named osETH. The value of osETH will rise over time, reflecting the accumulation of staking rewards and MEV. Regarding osETH redemption, Stakewise’s v3 Litepaper states:

After the Shanghai fork, the token can be redeemed for Ether in the validators or the Peg Stability Module (PSM), a special ETH reservoir, at a 1:1 ratio. When going through the PSM, a small redemption fee will be applied.

Once again, we have no details on the specific implementation or the waiting times for unstaking.

Rocket Pool

Rocket Pool is an exception to the rule in the sense that a mechanism for unstaking rETH for ETH has existed since the protocol’s early stages without needing staking withdrawals to be available. However, as we will explain next, this mechanism is only functional when there is an excess of unstaked ETH in the protocol.

Before proceeding, let us quickly review how Rocket Pool’s architecture works. Whenever a user wants to stake ETH via Rocket Pool, they are required to interact with the Deposit Pool Contract (the process is facilitated by Rocket Pool’s webpage). Users send ETH to this pool in exchange for minting rETH at the current exchange rate. The ETH is then moved to Rocket Pool’s Vault Contract where it remains stored until a node operator provides the required collateral to borrow 16 ETH from the pool and create a new validator (managed by a special minipool contract) with these funds. Since operators take on their duties permissionlessly and must provide their own collateral, it can take some time before funds in the pool end up being assigned to an operator.

With this in mind, let us examine Rocket Pool’s documentation on unstaking:

Trading rETH back for ETH is only possible when the staking liquidity pool has enough ETH to handle your trade. This is Rocket Pool’s pool of ETH that comes from two sources:

1. ETH that other stakers have deposited, which hasn’t been used by a Node Operator to create a new validator yet.

2. ETH that was returned by a Node Operator after they exited one of their validators and received their rewards from the Beacon Chain (
note that this is not possible until after the ETH1-ETH2 Merge occurs and withdrawals are enabled).

During the period before the Merge, it’s possible that the liquidity pool won’t have enough balance to cover your unstaking. In this scenario, you may find other ways to trade your rETH back to ETH, such as a decentralized exchange like
Uniswap, though they will likely come with a small premium.

In other words, if there is a surplus of funds in the pool, rETH holders can unstake by interacting with the Deposit Pool contract (once again, this can be done via Rocket Pool’s site). Unstaking burns rETH and gives the user ETH from the pool at the respective rate.

On pool liquidity

From the quote above, we see that part of the Deposit Pool liquidity will come from Node Operator exits — a source that will not be available until Ethereum withdrawals are implemented. Indeed, users who unstake their rETH currently do so by retrieving ETH put in the pool by new stakers instead of ETH returned by node operators. Although a node operator can currently exit their validators — to opt out of their validation duties, for example — the respective ETH and its Consensus layer rewards will stay locked for the time being.

The liquidity that is available for unstaking can be checked via several methods. We can query the getExcessBalance() function in the Deposit Pool contract (for example, on Etherscan). Historical data on pool liquidity and pool limit size is also available from Dune. The respective graph is shared below. Note that, to this day, there is an excess in liquidity of 5k ETH available for redemptions. Also note that this amount corresponds to the hardcoded Deposit Pool limit, so it is plausible to speculate that even more liquidity would flow into the protocol if it was possible.

Figure 1: Historical data of Rocket Pool’s Deposit Pool balance. Also note the increase in the Deposit Pool limit from 2k ETH to 5k ETH. Source: Dune Analytics (query by @mkr294). Consulted on Mar 1st, 2023.

All in all, the Rocket Pool protocol is currently in a position where unstaking demands can be met, but there have also been periods where pool liquidity is dried out, and unstaking is not available. The graph shows this was the case after May ‘22 — a time which coincides with an Ethereum price crash. In these situations, having Ethereum withdrawals available would provide a welcome source of liquidity for the deposit pool. However, unlike the case of Lido, Rocket Pool validators cannot be forcefully exited or put in an exit queue in order to accommodate unstaking demands. This is because withdrawals for Rocket Pool minipools are under the exclusive control of the operator — a fact that can be demonstrated by analyzing the exit methods in the relevant minipool contracts, all of which have the onlyMinipoolOwnerOrWithdrawalAddress modifier.

Therefore, to maintain a healthy unstaking mechanism, it is necessary to financially incentivize Rocket Pool operators to exit when the Deposit Pool liquidity is running low — for instance, via arbitrage opportunities. There have been initiatives in this direction based on the fact that an empty Deposit Pool reflects a low demand for rETH compared to the supply of node operators, which is expected to lead to a decrease in the rETH/ETH exchange rate. An example can be found in this post in Rocket Pool’s DAO forum, but there are no definitive plans that have been merged into the protocol yet.

Conclusion

In conclusion, liquid staking has the potential to provide a more accessible, liquid, and flexible staking option for Ethereum users. The introduction of staking withdrawals on Ethereum, scheduled for the upcoming Shanghai/Capella hard fork, will play a crucial role in the implementation (or improvement) of unstaking mechanisms for liquid staking protocols. The three most significant liquid staking providers — Lido, Rocket Pool, and Stakewise — are developing their own unstaking mechanisms to enable users to redeem their staked ETH. We find that:

  • Lido’s design has the most concrete and detailed discussions on how to handle unstaking volume in order to guarantee that stakers’ deposits will be made whole.
  • Only Rocket Pool’s design allows for unstaking before Shanghai/Capella. However, the mechanism depends on excess liquidity in the pool, will realize its full potential only after the hard fork, and still needs to implement incentives for node operators to exit in cases of scarce liquidity.

With the arrival of staking withdrawals to Ethereum, we can expect further innovation and development in the area of liquid staking, making it more appealing for users to get involved, reap the rewards, and help secure the blockchain.

Disclaimer:

This article has been prepared for the general information and understanding of the readers. No representation or warranty, express or implied, is given by Nethermind as to the accuracy or completeness of the information or opinions contained in the above article. The views and strategies described may not be suitable for all readers. Both past performance and yield may not be a reliable guide to future performance. All case studies are shown for illustrative purposes only and should not be relied upon as advice or interpreted as a recommendation. The article is based on the scope of materials and documentation publicly available to Nethermind, and it does not indicate Nethermind’s endorsement of any particular asset, project or team, nor guarantee its security. No third party should rely on this article in any way, including without limitation as financial, investment, tax, regulatory, legal or other advice, or interpret this article as any form of recommendation. Kindly note, Nethermind is currently engaged in a research project for Lido DAO. This article, however, has not been commissioned by Lido DAO, and has been prepared outside of the scope of the services provided to the DAO by Nethermind. To the fullest extent permitted by law, Nethermind disclaims any liability in connection with this article, its content, and any related services and products and your use thereof, including, without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement. Nethermind does not warrant, endorse, guarantee, or assume responsibility for any product or service advertised or offered by a third party through the product, any open source or third-party software, code, libraries, materials, or information linked to, called by, referenced by or accessible through the article, its content, and the related services and products, any hyperlinked websites, any websites or mobile applications appearing on any advertising, and Nethermind will not be a party to or in any way be responsible for monitoring any transaction between you and any third-party. You should use your best judgment and exercise caution where appropriate. FOR AVOIDANCE OF DOUBT, THE ARTICLE, ITS CONTENT, ACCESS, AND/OR USAGE THEREOF, INCLUDING ANY ASSOCIATED SERVICES OR MATERIALS, SHALL NOT BE CONSIDERED OR RELIED UPON AS ANY FORM OF FINANCIAL, INVESTMENT, TAX, LEGAL, REGULATORY, OR OTHER ADVICE.

Latest articles