Withdrawals - ynETH
Last updated
Last updated
We prioritize making our withdrawal process as secure, efficient and straight-forward as possible. ynETH can be withdrawn/unstaked directly via our YieldNest app. With this feature, we allow our users to claim any underlying assets in exchange for the requested ynETH.
As many of you might know, withdrawals for native LRTs (nLRTs) like ynETH have been in the works for some time, and it’s likely unclear to most users why this is the case. The reason is that an nLRT like ynETH restakes its validators to EigenPods, which then delegate stake to operators, who further delegate it to AVSs. This process is complex because each validator must submit proofs for deposits, rewards distribution, and withdrawals.
While this complexity adds some delays, it also ensures that our ETH validators are genuinely restaked with 100% provable ownership. This strengthens the infrastructure, making it safer and more reliable. This is also why we’ve separated ERC20 token (LSD) restaking from native restaking, and we basically have an nLRT and LRT factory for EigenLayer right now.
The delay is primarily due to the difficulty in proof generation, submission, and optimization, which is challenging. EigenLayer has significantly improved this process by introducing PEPE (M3), which EigenLayer has indicated will go live on mainnet on September 4th and is already live on testnet. We have fully completed the withdrawal flow and are now waiting for the PEPE (M3) deployment, after which we will start rolling out withdrawals for ynETH.
In order to redeem ynETH for its share of the underlying it is necessary to bring a sufficient quantity of ETH from the beacon chain into the EigenPod and then back into the ynETH protocol where it can be released to the redeeming account. Due to the inherent delays built into the aforementioned steps YieldNest implements a queue.
The UI provided by app.yieldnest.finance will provide a simple user experience. The rest of this section provides technical detail to help users understand how the process works behind the frontend interface.
To initiate the process the user calls requestWithdrawal with the amount of ynETH to redeem. This will transfer amount ynETH from the requester to ynETH’s WithdrawalQueueManger contract. In exchange for the ynETH the WithdrawalQueueManger mints a claim NFT to the requestor’s address. The NFT contains the amount being withdrawn, the amount of the withdrawal fee, the redemption rate, the request creation timestamp, and a flag indicating if the withdrawal has been processed yet. As usual, the NFT has a unique ID.
To complete the process the user calls claimWithdrawal with the ID of the NFT obtained from requestWithdrawal earlier. An address to receive the ETH is also supplied. If the ETH to cover the withdrawal is available, the claim NFT is marked used and burned, and the amount of ETH specified in the NFT to the receive address.
After calling requestWithdrawal the user must wait until funds are available before calling claimWithdrawal. The wait time depends on external factors, which will be addressed in the next section. Once initiated, withdrawal requests cannot be canceled. There is no time limit for claiming a withdrawal, which has implications we will discuss in the section on faster redemption methods.
As funds become ready for claiming an event called RequestsFinalized is emitted from the WithdrawalQueueManager contract. When lastFinalizedIndex is greater than or equal to the claim NFT’s ID then it’s ready to go.
The amount of time that will be necessary to wait between requesting a withdrawal and being able to receive the ETH depends primarily on the length of the beacon chain exit queue and the slashing delay imposed by EigenLayer.
Generally, the time it takes for ETH to be withdrawn from the beacon chain is:
The time until exited from the active set.
The time until entering the withdrawable state.
The time until the withdrawal sweep.
The timings are as follows:
This website can be consulted for timing information: www.validatorqueue.com. The relevant section is the Queue Wait Time (days) for the time it takes to exit the active set. During 2024 this time has been negligible on average, rarely exceeding 12 hours except for a brief period in the beginning of January when a sudden spike in exits caused a delay of up to 5 days.
This takes approximately 27 hours.
There is a limit of 16 validators per block, and currently there are approximately 1 million active validators, therefore it takes about 8.5 days for a full cycle. The exact time it takes for this to execute this sweep depends on the position of the validator index being withdrawn relative to the index of validator that was swept.
EigenLayer’s minWithdrawalDelayBlocks which is currently set to 50400, or 7 days. This parameter may be changed by EigenLayer in the future.
The withdrawal from EigenLayer and from the Beacon chain are started at the same time, running in parallel, thus the total delay before a withdrawal request becomes claimable is whichever delay is longer.
Withdrawals may be ready sooner than these delay times if they can be satisfied by funds already in flight that aren't required to satisfy previously queued requests. For example, if user A had a request for 50 ETH, and then user B requested 10, then user B’s withdrawal will be claimable at the same moment that user A can claim. This is due to the fact that validators each contain 32 ETH, and therefore 2 validators for 64 ETH had to be exited in order to satisfy A because A needs less than or equal to 14 ETH.
There are two ways to avoid having to wait in the withdrawal queue:
Swap ynETH
Swap a claim NFT
For a faster process for withdrawing funds, users can swap their ynETH on secondary sites such as liquidity pool providers. Keep in mind that using this method can become quite costly due to swap rates and slippage costs. Currently, there is a Curve pool here: https://curve.fi/#/ethereum/pools/factory-twocrypto-44/deposit
The second option is for a user who wants liquidity now to sell their claim NFT to another party who is willing to wait for it to be redeemable. More information on arranging such trades will be published soon.