Legacy minipool, node wallet intact but validator keys lost — is there any exit path?

I have a legacy 16 ETH minipool in `staking` status. I control the node wallet,
but the validator keystore files are lost — the machine they were on is gone and
there was no backup. The keys are not derivable from the node mnemonic; I checked
`m/12381/3600/i/0/0` and `m/12381/3600/i/0` for i = 0..199 against the validator
pubkey, using the same derivation as `shared/services/wallet`.

What I have already ruled out:

- `beginReduceBondAmount` → *"Minipool bond reductions are no longer available"*
- RPL withdrawal — the node is below minimum collateral
- The minipool delegate (latest, `useLatestDelegate` is on) exposes no function
  that would make the minipool send an EIP-7002 exit request. The predeploy is
  live and the withdrawal credentials name the minipool, so the minipool is the
  only address that could send one.

RPIP-44 gives node operators a keyless exit, but on **megapools** — and migrating
to a megapool appears to require exiting the legacy validator first, which is the
one thing I cannot do.

**Questions**

1. Is there any way today to exit a `staking` legacy minipool without the
   validator key — oDAO, guardian, or anything else?

2. Is EIP-7002 exit support planned for the legacy minipool delegate, so that
   `useLatestDelegate` would pick it up? Any rough timeline?

3. `setWithdrawalAddress` can always be called by the node address. Is there any
   way to make a withdrawal address permanent, or lock the node address out of
   changing it?

4. If the answer to 1 and 2 is "no, and probably never", I would rather know that
   plainly than keep waiting on it.
1 Like

Hi! Sorry to hear about this, but there’s some good news:

  1. Currently there is not.
  2. RPIP-80: Exit Requests, Triggering Exits, and Minipool Penalties includes an updated minipool delegate with EIP-7002 support. Once that is implemented, you should either be able to exit yourself via the withdrawal address or, assuming your validator is down if you don’t have the keys, will be exited for performance reasons shortly after this goes into effect. Given that `useLatestDelegate` is set, you don’t have to do anything but wait for this to be deployed.
  3. It cannot actually, the withdrawal address can only be changed by the current withdrawal address. So once it is set to another address, the node address no longer has the power to set it.
1 Like