Staking withdrawals
To get staked ETH back to a wallet, it is necessary to
- unstake the ETH via a partial withdrawal or a full exit (see below for more information) and
- withdraw the ETH once it reaches the vault.
Staking withdrawal — leaving the beacon chain
A validator's balance lives on the beacon chain. Two operations bring it back to the vault, and the difference is just how much:
- Partial withdrawal (unstake). withdraws any balance above the 32 ETH minimum from the validator. The validator stays
activeand keeps producing rewards. - Full exit. Withdraws the validator's entire balance and exits it. The validator transitions
active → exited → withdrawnas the beacon chain processes the exit.
Both are triggered with the same call — triggerValidatorWithdrawals (EIP-7002) — which is gated by TRIGGER_VALIDATOR_WITHDRAWAL_ROLE. The amount you request is what decides whether it's a partial withdrawal or a full exit. For the exact per-validator parameters, see Unstake a validator.
How to exit a validator.triggerValidatorWithdrawalsforces the withdrawal directly from the execution layer.
Where the ETH lands. Once a validator is exited, its principal and accumulated rewards are swept into the vault's own balance on the execution layer. The waiting time depends on a) whether the withdrawal was partial or a full exits, and b) network conditions (exit queue, number of active validators, etc.).
Background on Ethereum withdrawals. This step is standard Ethereum staking-withdrawal behaviour. For the protocol-level mechanics — partial-withdrawals, the exit queue, the ~27-hour withdrawability delay, and the 16-withdrawals-per-block sweep — see:
- Staking withdrawals — ethereum.org: the clearest overview of partial vs full withdrawals and the automatic sweep.
- Withdrawal process explained — EthStaker: a practical walkthrough with timing details.
- EIP-7002: Execution layer triggerable withdrawals: the spec behind
triggerValidatorWithdrawals(live since the Pectra upgrade).
to withdraw or exit a validator in the UI: from the Validators table, choose Withdraw for a partial amount or Exit for a full exit. Pick the validator(s), enter the amounts, review, and sign.
</>to withdraw or exit a validator via the API: seetriggerValidatorWithdrawals. PassamountsGweiper validator; an amount equal to the validator's full balance triggers a full exit.
Withdrawing from a dedicated vault
For a dedicated (single-owner) vault, the swept ETH simply raises the vault's balance, and the owner moves it to a wallet with a single withdraw call gated by WITHDRAW_ROLE. There is no request/finalize/claim queue — that exists only for pools.
The one constraint that surprises people: you can only withdraw unlocked ETH. A vault's withdrawableValue is the ETH that is not locked behind minted stETH and not reserved for fees and obligations. If the vault has minted stETH against its stake, that portion is locked — you must burn stETH or rebalance the vault to free it before it can be withdrawn.
The withdrawable amount is read from the vault's latest oracle report. As with funding and minting, a stale report is refreshed with an Update report step before the withdrawal goes through. See Vault health for how locked vs. unlocked ETH is tracked, and Fee model for the fees held back from withdrawable value.
to withdraw ETH from a vault in the UI: open the vault, click Withdraw, enter an amount (the Max button fills in the full withdrawable balance), choose the destination wallet, and sign. The review screen shows the vault's ETH and health factor before and after.
</>to withdraw ETH from a vault via the API: seewithdrawFromVault. Passether(in wei) and therecipientaddress. The call reverts if the amount exceeds the vault's withdrawable value.
Withdrawing from a pool vault
Pro only: pool vaults are an SVM Pro feature. Pool withdrawals require an SVM Pro account.
A pool vault is shared by many depositors, so its withdrawals run through a dedicated Withdrawal Queue contract in three steps:
- Request — the depositor calls
requestWithdrawalwith the amount to withdraw and the address that will be allowed to claim it (the owner). Their LP shares (and, for stETH pools, the matching liability shares) are transferred into the queue and a request record is created. Requests are processed in order (FIFO). - Finalize — once the pool holds enough liquid ETH, an address with
FINALIZE_ROLEfinalizes pending requests in batches, locking in the rate at which each request converts to ETH. If the pool is short on liquidity, the node operator must first withdraw staked ETH from validators (layer 1) to top it up. A request can only be finalized after the pool's minimum withdrawal delay (minWithdrawalDelayTime, set at pool creation) has elapsed since it was made. - Claim — the owner calls
claimWithdrawalfor any of their finalized requests and receives the ETH at the recipient address.
This is the same flow described in Staking pools → Withdrawals, viewed from the withdrawal side. Finalization can also be paused independently of new requests via the queue's pause roles; see Roles and permissions.
to use the pool withdrawal queue in the UI: on a pool vault, open the Withdraw flow and choose Request withdrawal (enter an amount and the claim address) or Claim withdrawal (pick from your finalized requests). The node operator finalizes requests from the same area.
</>to use the pool withdrawal queue via the APIRequest:
requestWithdrawal. Finalize:finalizeWithdrawals. Claim:claimWithdrawals. Track a depositor's requests and what's claimable withgetWithdrawalQueueUserStats.
After a consolidation
A consolidation merges several validators into one target validator. The exited source validators don't get a separate withdrawal: their principal and pending rewards sweep back to the vault and are released through the same withdrawal process described above (a dedicated-vault withdraw, or the pool queue). The consolidated balance itself stays staked on the target validator. See Validator consolidations.
Related
- Validator lifecycle: how validators reach the
exitedstate that feeds a withdrawal - Staking vaults: dedicated vs pool vaults and the contracts behind each
- Staking pools: the pool deposit and withdrawal mechanics in full
- Vault health: locked vs. unlocked ETH and what limits withdrawable value
- Roles and permissions: the roles named on this page
- Unstake a validator: step-by-step partial withdrawal and full exit
Updated about 4 hours ago
