Native EigenLayer Withdraw Flow

This page describes how you can withdraw your CL rewards or exit your validators from your EigenPod.

In order to withdraw, you will need to whitelist the following smart contracts:

This contracts should be whitelisted alongside the staking and exiting contract for native staking in our dashboard that can be found here

Overview

On EigenLayer, your CL rewards and exited validators get skimmed on your EigenPod.

  1. Withdraw CL rewards: Consensus layer rewards of your validator are automatically skimmed every ~8 days by the protocol to the withdrawal address set on the validator, which is set to your EigenPod. To withdraw these rewards you need to perform 2 transactions:

    1. The first transaction requires you to upload one proof for each skimming on each validator. Once this transaction is confirmed on chain the proven amount will be placed in a withdraw queue for 7 days. Note that this withdraw queue is implemented by the EigenLayer contracts and distinct from the Beacon Chain validator queues.

    2. After the queuing period of 7 days, the equivalent amount of ETH will be available to withdraw. All withdrawal requests that finish the 7-day queuing period can be withdrawn in one single transaction.

  2. Withdraw Exited Validators: First, you will need to exit it from the Beacon Chain. After the Beacon Chain has processed the exit, your 32 ETH collateral gets sent to your EigenPod. This is also a skimming cycle, so you need to submit one proof for it and wait 7 days as described in step 5. Once this is done, you will be able to withdraw your stake in one transaction.

About the proofs

We saw in several of the above steps that proofs needed to be submitted to the EigenLayer smart contracts - when restaking a new validator, and when skimming consensus layer rewards. What are these proofs and why are they needed?

In short, these proofs enable the EigenPod contracts to confirm that the ETH that comes into them is indeed linked to the consensus-layer activity of the corresponding validator, and not ETH that may have been sent to the EigenPod from another source. The proofs are generated off-chain using Consensus-layer data, and submitted to the EigenLayer smart contract which performs a cryptographic verification using Merkle Trees.

πŸ’‘Note on batching proofs

You can submit proofs in batches of up to about 25 in one single transaction - beyond this amount you start to hit the transaction gas limits (there is no limit in the EigenLayer contracts, the only limit is how much gas can be spent in a single tx). The gas cost of the transaction will increase linearly with the number of proofs you are submitting.

Note that you can only batch submit proofs into the same EigenPod.

Withdraw ETH from your EigenPod

Make sure your validators are restaked before you request the exit or try to withdraw CL rewards. Not restaking your validators could place your EigenPod in a state where he generates rewards but it's complex to exit, contact our support team if you need help.

1 - Exit your ETH validator, this can be done from Kiln Dashboard

To unstake your restaked validator, please follow the usual flow described here (i.e either Kiln Dashboard or pre-signed exit messages)

Once your validator has exited, the funds will go to your EigenPod. You will see this amount in the dashboard under total available balance and see the breakdown for each EigenPod in the table bellow.

This balance is composed of CL rewards and exited validators.

2 - Request withdraw from your available balance

If you are using Fireblocks, you will need to whitelist your EigenPod address and the DelayedWithdrawalRouter address. Get in touch with the Kiln team if you need help on this.

Hover your EigenPod, and click "Request withdraw"

This flow will allow you to withdraw generated CL rewards or exited validators by automatically generating the right transaction to create the request withdraw, you can click on request withdraw and see the amount requested in each transaction incrementing in the withdraw requested section.

After your performed this operations, you will be able to see the amount queued in the key metric "withdraw balance", under pending.

This flow can take a couple of transaction to complete depending on the amount you are exiting and if you are requesting the exit of validators.

3 - Fulfill withdraw

After the 7-day escrow period, you will be able to see an amount of ETH ready in the withdraw balances. Hover your EigenPod, and click "Withdraw" to continue.

This will open the withdrawals modal, where you can see the amount available to withdraw and the amount pending. You can over the bottom section of the modal to have the details on when your request is estimated to be ready and the amount associated with it.

Click "Withdraw" to receive the displayed amount on your wallet.

This flow can take a couple of transaction to complete depending on the amount you are exiting and if you are requesting the exit of validators.

Last updated