Introducing the next EigenPod update: RETIRE - Retirement Enabling Terminal, Irreversible Restaking Exit.
Presently, EigenPods enforce strict accounting invariants at all times, even if a user has queued withdrawals of all active EigenPod stake. This means that all ETH arriving at the pod must be strictly accounting for with checkpoints, and escrowed withdrawals are the only mechanism by which it can be removed. At time of writing, the BeaconChain entry queue is 47 days long, making any rotation of keys or exit from EigenLayer costly in terms of missed rewards.
This proposal seeks to resolve major Native ETH Staker and Operator pain points by allowing the owner to permanently disable an EigenPod in good standing associated with their address. Doing so relaxes the accounting constraints on ETH in the pod, lowering the friction for permanent rekeying and exit operations.
The full proposal can be viewed in the ELIP repo.
Executive Summary:
RETIRE is an EigenPod upgrade that lets a Pod Owner permanently and irreversibly disable restaking on their pod via a new disablePod method on the EigenPodManager. Once disabled, the pod is retired from EigenLayer’s share accounting: no new shares can be minted, all ETH the pod holds is treated as non-restaked and is fully sweepable, and the external consolidation restriction introduced in ELIP-009 (MOOCOW) is lifted so the owner may consolidate their validators to any target — including validators in other pods or outside EigenLayer entirely.
This unlocks two capabilities that EigenPods have historically lacked: a way to rotate the keys controlling a pod’s validators (by consolidating their balance into freshly-keyed validators) without exiting and re-entering the (presently multi-week) beacon-chain entry queue, and a low-friction exit from EigenLayer that does not require completing a final checkpoint.
The upgrade is fully opt-in and backwards-compatible: pods that never call disablePod are unaffected, and no existing interface is broken. It adds one new EigenPodManager method (disablePod), two new EigenPod methods (disableRestaking, withdrawDisabledPodETH), one new DelegationManager method (clearQueuedWithdrawalsForDisabledPod), a new PAUSED_DISABLE_POD pause flag, and a set of preconditions that guarantee no value is lost, double-paid, or used to evade slashing across the irreversible transition.