- Partial withdrawal of the rewards balance staked above 32 ETH.
- Full withdrawal of all staked assets, followed by liquidating the operator node and exiting the network.
To initiate a withdrawal in the Ethereum network using the Restaking API, follow these steps:
- Start Checkpoint: construct a serialized transaction to start a checkpoint, proving the expected funds are deposited in the EigenPod and/or validator.
- Verify Checkpoint Proofs: construct a serialized transaction to verify received proofs.
- Prepare Undelegate Restake Transaction: construct a serialized transaction to undelegate the staked amount of tokens from a node operator.
- Queue Withdrawals: construct a serialized transaction to queue withdrawals.
- Create Withdrawal Request: construct a serialized transaction to initiate the validator’s exit from the network.
- Complete Queued Withdrawals: construct a serialized transaction to complete queued withdrawals after the escrow period.
1. Start Checkpoint Proof
1. Create a serialized transaction to start a checkpoint by sending a POST request to /api/v1/eth/staking/eigenlayer/tx/start-checkpoint. Example request:eigenPodOwnerAddress— owner of the EigenPod address.
serializeTx— serialized .to— recipient address for this transaction.gasLimit— maximum gas limit for this block.data— transaction data.value— amount this transaction is sending in Wei.chainId— chain ID this transaction is authorized on, as specified by EIP-155.type— EIP-2718 type of this transaction envelope.maxFeePerGas— maximum price per unit of gas this transaction will pay for the combined EIP-1559 block’s base fee and this transaction’s priority fee in Wei.maxPriorityFeePerGas— price per unit of gas in Wei, which is added to the EIP-1559 block’s base fee. This added fee is used to incentivize miners to prioritize this transaction.
serializeTx to sign and send the signed transaction to the Ethereum network.
By broadcasting this transaction, you are beginning the process of proving that the amount of validator ETH is active and its withdrawal credentials are pointing to the EigenPod.
2. Verify Checkpoint Proofs
1. Create a serialized transaction to verify received checkpoint proofs by sending a POST request to /api/v1/eth/staking/eigenlayer/tx/verify-checkpoint-proofs. Example request:eigenPodOwnerAddress— owner of the EigenPod address.activateTx— hash of the start checkpoint transaction.
serializeTx to sign and send the signed transaction to the Ethereum network.
By broadcasting this transaction, you are making progress on submitting checkpoint proofs to EigenLayer contracts. After the checkpoint completion, the rewards will be withdrawn to the eigenPodOwnerAddress.
This is the last step in the partial withdrawal flow.
3. Create Undelegate Request
To continue the flow to fully withdraw the stake and the rewards amount: 1. Construct a serialized transaction to undelegate the staked amount of tokens from a node operator by sending a POST request to /api/v1/eth/staking/eigenlayer/tx/undelegate. Example request:eigenPodOwnerAddress— owner of the EigenPod address.
serializeTx to sign and send the signed transaction to the Ethereum network.
4. Queue Withdrawals
1. Construct a serialized transaction to queue withdrawals for all the deposited tokens by sending a POST request to /api/v1/eth/staking/eigenlayer/tx/queue-withdrawals. Example request:eigenPodOwnerAddress— owner of the EigenPod address.amount— amount of ETH that is being unstaked.
serializeTx to sign and send the signed transaction to the Ethereum network.
5. Prepare Withdrawal Transaction
1. Construct a serialized transaction to initiate the network exit for active validators by sending a POST request to /api/v1/eth/staking/direct/tx/withdrawal. Example request:pubkeys— list of validators public keys.
serializeTx to sign and send the signed transaction to the Ethereum network. By broadcasting this transaction, you are submitting the validator’s exit from the Ethereum network.
6. Complete Queued Withdrawals
1. After the withdrawal escrow period has elapsed, construct a serialized transaction to complete queued withdrawals by sending a POST request to /api/v1/eth/staking/eigenlayer/tx/complete-queued-withdrawals. Example request:eigenPodOwnerAddress— owner of the EigenPod address.queueWithdrawalsTx— hash of the queue withdrawals transaction.
serializeTx to sign and send the signed transaction to the Ethereum network.