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 per validator. If you have more than 80 validators, you may need to sign multiple transactions, as each proof transaction can contain a maximum of 80 validator proofs. Once the transaction(s) are 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.

  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 the same proofs as for the rewards and then wait 7 days as described in step 1.1. 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.

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 number of validator that point to the EigenPod.

A common cause of withdrawal errors when using Fireblocks is related to the size of the transaction payload. Resolution steps:

  • Inform Fireblocks that you're experiencing issues with large transaction payloads from Eigenlayer.

  • Request that they "disable decoding of contract call data" for your workspace.

  • The resolution typically involves a manual setup adjustment on Fireblocks' end for your specific workspace. This allows their system to handle the large transaction payloads associated with Eigenlayer withdrawals. Learn more about this issue here.

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.

Last updated