diff --git a/docs/restakers/restaking-guides/1-restaking-developer-guide.md b/docs/restakers/restaking-guides/1-restaking-developer-guide.md index 49c02099..4b31dccf 100644 --- a/docs/restakers/restaking-guides/1-restaking-developer-guide.md +++ b/docs/restakers/restaking-guides/1-restaking-developer-guide.md @@ -177,7 +177,14 @@ There are two options when withdrawing restaked validator ETH: * Exit validator and withdraw restaked balance. * Continue as a validator and withdraw yield only. -With the exception of stopping and exiting the validator, the two processes are the same. The process to withdraw restaked validator ETH is: +Withdrawals can be triggered from the: +* [Consensus layer/Beacon chain](#consensus-layer-triggered-withdrawals) +* [Execution layer](#execution-layer-triggered-withdrawals). + +#### Consensus Layer Triggered Withdrawals + +With the exception of stopping and exiting the validator, the processes are the same for a full and partial +withdrawal. The process to withdraw restaked validator ETH is: 1. [If exiting the validator, stop the validator and wait for the validator to go through the exit queue.](#step-1-stopping-validator) 2. [Generate a checkpoint proof to bring the balance in your EigenPod up to date.](#step-2-generate-checkpoint-proof) @@ -185,7 +192,7 @@ With the exception of stopping and exiting the validator, the two processes are 4. [Queue a withdrawal, and wait for EigenLayer escrow period.](#step-4-queue-withdrawal) 5. [Complete withdrawal.](#step-5-complete-withdrawal) -#### Step 1 Stopping Validator +##### Step 1 Stopping Validator If exiting validator and withdrawing restaked balance, fully exit the validator: 1. Monitor the validator activity at [beaconcha.in/validator/\[yourvalidatorid](http://beaconcha.in/validator/\[yourvalidatorid)\]. @@ -195,18 +202,18 @@ After a validator's status changes to "exited", it can take between 24 hours and the EigenPod. See the "Withdrawals" tab and "Time" column for your validator via beaconcha.in/validator/[yourvalidatorid]#withdrawals . The ETH will then be viewable in the EigenPod's address on the Execution Layer. -#### Step 2 Generate Checkpoint Proof +##### Step 2 Generate Checkpoint Proof Generate checkpoint proof using [eigenpod-proofs-generation CLI](https://github.com/Layr-Labs/eigenpod-proofs-generation/tree/master/cli#checkpoint-proofs) to account for any ETH that has accumulated in the EigenPod. Once completed, the balance in your EigenPod is up to date. -#### Step 3 Determine the Number of Withdrawable Shares +##### Step 3 Determine the Number of Withdrawable Shares To determine the number of withdrawable shares: 1. Invoke `[YourEigenPodContract].withdrawableRestakedExecutionLayerGwei()` to get the amount of withdrawable execution layer ETH in Gwei. 2. Convert the Gwei to Wei (multiply Gwei by 10^9 or 1,000,000,000). -#### Step 4 Queue Withdrawal +##### Step 4 Queue Withdrawal To queue withdrawal: @@ -221,7 +228,7 @@ If you queue a withdrawal with an amount of shares higher than the withdrawable a checkpoint or restart the escrow process before the withdrawal can be completed. ::: -#### Step 5 Complete withdrawal +##### Step 5 Complete withdrawal As the EigenPod Owner Wallet, invoke the [`DelegationManager.completeQueuedWithdrawal()`](https://github.com/Layr-Labs/eigenlayer-contracts/blob/main/docs/core/DelegationManager.md#completequeuedwithdrawal) function. @@ -230,6 +237,15 @@ Withdrawals can only be cancelled after waiting the full escrow period. To cance function with the parameter `receiveAsTokens` set to `FALSE`. ::: +#### Execution Layer Triggered Withdrawals + +:::note +The [`requestWithdrawal` method](https://github.com/Layr-Labs/eigenlayer-contracts/blob/v1.6.0-rc.0/docs/core/EigenPod.md#requestwithdrawal) is available in v1.6 which is [currently available on testnets](https://github.com/Layr-Labs/eigenlayer-contracts/releases).. +::: + +To request a full or partial withdrawal, use the [`requestWithdrawal` method](https://github.com/Layr-Labs/eigenlayer-contracts/blob/v1.6.0-rc.0/docs/core/EigenPod.md#requestwithdrawal). +Additional details [here](https://hackmd.io/uijo9RSnSMOmejK1aKH0vw?view#Technical-Details). + ## FAQ ### Queue withdrawal takes an `amount` as input, what will that value be?