geeogi

The third way to exit Lido stETH, tokenised withdrawal requests, january 2023

The upcoming Shanghai upgrade will enable validators to withdraw their stake and allow liquid staking protocols like Lido to offer redemptions for the first time giving users a robust way to exit their staked position without being held hostage to the market price of stETH.

According to the proposed plan for Lido withdrawals released last week users will be able to initiate a withdrawal request by locking up their stETH and waiting in a FIFO queue to redeem ETH. Interestingly, the withdrawal request itself will be a transferrable token which effectively enables users to sell their position in the Lido queue before their redemption is finalised.

That gives users three ways to exit their position:

  1. Sell their stETH on Curve/Uniswap
  2. Request withdrawal and sell their position in the withdrawal queue
  3. Wait for their withdrawal request to finalise and redeem ETH

The time taken for the withdrawal request to finalise is variable and ranges from hours to months in the extreme case depending on withdrawal demand and potential mass slashing events (described below). The withdrawal request token cannot be cancelled and does not earn yield during the waiting period (that’s to prevent users continually depositing and withdrawing) and it might suffer from a negative rebase in the case of a mass slashing event.

So a withdrawal request token represents access to ETH with a variable maturity and some risk of a negative rebase. Presumably it would trade just below 1 ETH. That could hold true even if stETH is trading at a discount, making withdrawal request tokens a practical way to exit and arbitrage without having to wait for requests to finalise.

The timings of a withdrawal request:

1-24 hours:

When a withdrawal request is initiated the user must wait at least until the next Lido oracle update is reported which could be up to 24 hours depending on the time the request is made. This is to ensure the user doesn’t withdraw immediately after a mass slashing event before the protocol has had a chance to distribute the slashing penalty. In theory Lido could make use of ETH in the deposit buffer, that’s ETH that’s been deposited by users recently but not yet staked by a Lido validator, to fulfil withdrawal requests soon after an oracle update.

1-5 days:

For larger requests Lido will need to withdraw ETH from validators using either full or partial withdrawals. If there’s enough ETH available in rewards eligible for partial withdrawals (Lido has 200k ETH in rewards currently) then the request could be fulfilled within 5 days depending on the size of the ethereum withdrawal queue.

1 day - few months:

If there’s not enough rewards eligible for partial withdrawal then Lido validators will need to exit and withdraw their entire stake which could take a few days or a few months if the ethereum validator exit queue is busy.

18 days:

If the oracle reports a mass slashing event then the protocol will enter “bunker mode” and all withdrawals will be delayed by at least 18 days which is the time it takes for the protocol to understand exactly how much slashing penalty has occurred. This might also result in a negative rebase for the withdrawal meaning that the user might, for example, only be able to withdraw 0.98 ETH for every 1 stETH.