Skip to main content

Verify Validator Withdrawal Prefix (Optional)

Beacon chain validators contain a field known 'withdrawal credentials', which can be utilized in the future to withdraw funds from the validator's balance on the beacon chain. The first two bytes of these credentials are known as the withdrawal prefix.

The prefix can either be 0x00 or 0x01:

  • Validators with 0x00 prefix: These are specific to BLS-style withdrawal credentials, common to early ETH stakers. Validators with this prefix can easily restake on EigenLayer, by repointing their withdrawal credentials.
  • Validators with 0x01 prefix: This newer method is derived from Ethereum addresses. While beacon chain rewards are much easier for these validators, restaking on EigenLayer is quite difficult. In order for 0x01 validators to restake, they have to completely exit from the beacon chain, re-enter on the beacon chain as a new validator, and then repoint withdrawal credentials to the EigenLayer smart contract.

New Validators

ETH stakers planning to create new validators can set their withdrawal credential directly to their EigenPod or deploy with 0x00 prefixed withdrawal credentials for an easier transition to EigenLayer later. In order to use the 0x00 prefix, do not set --execution_address or --eth1_withdrawal_address flags when setting up new validators.

Existing Validators

How do I check if I have a 0x00 or an 0x01 address?

There are multiple methods to do this; the easiest is using ethdo.

ethdo validator info --validator=<yourvalidatorIndex> --verbose

This outputs a withdrawal credentials field which either begins with 0x00 or 0x01.

Additionally, you can check beaconcha.in, navigate to your validator page, and check the Beaconchain Deposits field under the Deposits tab.

Prefix Migration from 0x00 to 0x01

If you have 0x00-prefixed credentials, you can only migrate once to a 0x01-prefixed credential per the Ethereum protocol rules. You may choose to either:

  • Migrate your withdrawal credential to your EigenPod address.
  • Migrate (convert) your withdrawal credential from a BLS address (0x00) to an execution address (0x01), noting that an EigenPod qualifies as an execution address. It's crucial to understand that if the withdrawal credential is set to a 0x01 address that does not correspond to your EigenPod, you will be unable to restake. In such a scenario, exiting your validators becomes a necessary step.

If you update your credentials before restaking on EigenLayer, you will have to go through the withdrawal queue and then restart the ETH validator staking process.

danger

This migration is a one-time process, so please proceed cautiously.

Existing Validators with 0x01 Prefixes

If you have validators with 0x01 prefixes that are not pointed to an EigenPod, you will have to go through the withdrawal queue. In this case, you'll need to withdraw your ETH, create a new Ethereum validator with the withdrawn ETH, and set the withdrawal credentials to an EigenPod to restake on EigenLayer.