CoinCashew
English
English
  • Home
  • About Us
  • Donations
  • Contributing
    • Contributor Covenant Code of Conduct
    • Style Guide
  • Disclaimer
  • Wallets
    • Guide: Crypto Wallet Tips 101 - Do's and Don'ts
      • Review: Metal Bitcoin Seed Storage by jlopp
  • Coins
    • Ethereum: ETH
      • πŸ›‘οΈEthPillar: one-liner setup tool and node management TUI
      • πŸ₯©Guide | How to setup a validator for Ethereum staking on mainnet
        • Overview - Manual Installation
        • PART I - INSTALLATION
          • Step 1: Prerequisites
          • Step 2: Configuring Node
          • Step 3: Installing execution client
            • Nethermind
            • Besu
            • Geth
            • Erigon
            • Reth
          • Step 4: Installing consensus client
            • Lighthouse
            • Lodestar
            • Teku
            • Nimbus
            • Prysm
          • Step 5: Installing Validator
            • Setting up Validator Keys
            • Installing Validator
              • Lighthouse
              • Lodestar
              • Teku
              • Nimbus
              • Prysm
            • Next Steps
          • Monitoring your validator with Grafana and Prometheus
          • Mobile App Node Monitoring by beaconcha.in
          • Monitoring with Uptime Check by Google Cloud
        • PART II - MAINTENANCE
          • Updating Execution Client
          • Updating Consensus Client
          • Backups Checklist: Critical Staking Node Data
          • Uninstalling Staking Node
          • Finding the longest attestation slot gap
          • Checking my eth validator's sync committee duties
          • Checklist | Confirming a healthy functional ETH staking node
        • PART III - TIPS
          • Voluntary Exiting a Validator
          • Verifying Your Mnemonic Phrase
          • Adding a New Validator to an Existing Setup with Existing Seed Words
          • Switching / Migrating Consensus Client
          • πŸ›‘οΈSwitching / Migrating Execution Client
          • ⚑Using Node as RPC URL endpoint
          • Using All Available LVM Disk Space
          • Reducing Network Bandwidth Usage
          • How to re-sync using checkpoint sync
          • Important Directory Locations
          • Improving Validator Attestation Effectiveness
          • EIP2333 Key Generator by iancoleman.io
          • 😁Geth - Enabling path-based state storage
          • Disk Usage by Execution / Consensus Client
          • Dealing with Storage Issues on the Execution Client
        • Join the Community
        • Credits
        • See Also
        • Changelog
      • 🌠Guide | How to setup a validator for Ethereum staking on testnet HOODI
        • Overview - Manual Installation
        • Step 1: Prerequisites
        • Step 2: Configuring Node
        • Step 3: Installing execution client
          • Nethermind
          • Besu
          • Geth
          • Erigon
          • Reth
        • Step 4: Installing consensus client
          • Lighthouse
          • Lodestar
          • Teku
          • Nimbus
          • Prysm
        • Step 5: Installing Validator
          • Setting up Validator Keys
          • Installing Validator
            • Lighthouse
            • Lodestar
            • Teku
            • Nimbus
            • Prysm
          • Next Steps
        • Maintenance
          • Updating Execution Client
          • Updating Consensus Client
          • Backups Checklist: Critical Staking Node Data
          • Uninstalling Staking Node
      • ⛓️Guide | How to setup a validator for Ethereum staking on testnet HOLESKY
        • Overview - Manual Installation
        • Step 1: Prerequisites
        • Step 2: Configuring Node
        • Step 3: Installing execution client
          • Nethermind
          • Besu
          • Geth
          • Erigon
          • Reth
        • Step 4: Installing consensus client
          • Lighthouse
          • Lodestar
          • Teku
          • Nimbus
          • Prysm
        • Step 5: Installing Validator
          • Setting up Validator Keys
          • Installing Validator
            • Lighthouse
            • Lodestar
            • Teku
            • Nimbus
            • Prysm
          • Next Steps
        • Maintenance
          • Updating Execution Client
          • Updating Consensus Client
          • Backups Checklist: Critical Staking Node Data
          • Uninstalling Staking Node
      • πŸ’°Guide | MEV-boost for Ethereum Staking
        • MEV Relay List
      • πŸ”ŽGuide | Recover Ethereum Validator Mnemonic Seed
      • πŸ¦‰Update Withdrawal Keys for Ethereum Validator (BLS to Execution Change or 0x00 to 0x01) with ETHDO
      • πŸ“œArchived Guides
        • Guide Version 1 | How to setup a validator for Ethereum staking on MAINNET
          • PART I - INSTALLATION
            • Step 1: Prerequisites
            • Step 2: Configuring Node
            • Step 3: Setting up Validator Keys
            • Step 4: Installing execution client
            • Step 5: Installing consensus client
            • Monitoring your validator with Grafana and Prometheus
            • Mobile App Node Monitoring by beaconcha.in
            • Security Best Practices for your ETH staking validator node
            • Synchronizing time with Chrony
            • Monitoring with Uptime Check by Google Cloud
          • PART II - MAINTENANCE
            • Updating your consensus client
            • Updating your execution client
            • Uninstalling V1 Staking Node
            • Finding the longest attestation slot gap
            • Checking my eth validator's sync committee duties
            • Pruning the execution client to free up disk space
            • Checklist | Confirming a healthy functional ETH staking node
          • PART III - TIPS
            • πŸ›‘οΈSwitching / Migrating Execution Client
            • Voluntary Exiting a Validator
            • Verifying Your Mnemonic Phrase
            • Adding a New Validator to an Existing Setup with Existing Seed Words
            • Switching / Migrating Consensus Client
            • Using All Available LVM Disk Space
            • Reducing Network Bandwidth Usage
            • How to re-sync using checkpoint sync
            • Important Directory Locations
            • Hosting Execution client on a Different Machine
            • Adding or Changing Graffiti flag
            • Improving Validator Attestation Effectiveness
            • EIP2333 Key Generator by iancoleman.io
            • Disk Usage by Execution / Consensus Client
            • Dealing with Storage Issues on the Execution Client
          • Join the Community
          • Credits
          • See Also
          • Changelog
        • Guide Version 1 | How to setup a validator for Ethereum staking on testnet GOERLI
          • Step 1: Prerequisites
          • Step 2: Configuring Node
          • Step 3: Setting up Validator Keys
          • Step 4: Installing execution client
          • Step 5: Installing consensus client
        • Guide Version 2 | How to setup a validator for Ethereum staking on testnet GOERLI
          • Step 1: Prerequisites
          • Step 2: Configuring Node
          • Step 3: Installing execution client
            • Nethermind
            • Besu
            • Geth
            • Erigon
          • Step 4: Installing consensus client
            • Lighthouse
            • Lodestar
            • Teku
            • Nimbus
            • Prysm
          • Step 5: Installing Validator
            • Setting up Validator Keys
            • Installing Validator
              • Lighthouse
              • Lodestar
              • Teku
              • Nimbus
              • Prysm
            • Next Steps
          • Maintenance
            • Updating Execution Client
            • Updating Consensus Client
            • Backups Checklist: Critical Staking Node Data
            • Uninstalling Staking Node
        • Guide | Ethereum Staking on Zhejiang Testnet
        • Guide | Besu + Lodestar | Most Viable Diverse Client | Staking Ethereum on Kiln testnet
        • Guide | How to setup a validator for Ethereum staking on Pithos testnet in 10 minutes or less
        • Ethereum Merge Upgrade Checklist for Home Stakers and Validators
        • Guide | Operation Client Diversity: Migrate Prysm to Teku
      • Guide: How to buy ETH
    • Cardano: ADA
      • Guide: How to Set Up a Cardano Stake Pool
        • Benefits of Operating a Cardano Stake Pool
        • PART I - INSTALLATION
          • Prerequisites
          • Hardening an Ubuntu Server
          • Setting Up chrony
          • Installing the Glasgow Haskell Compiler and Cabal
          • Compiling Cardano Node
        • PART II - CONFIGURATION
          • Downloading Configuration Files
          • Configuring Topology
          • Configuring an Air-gapped, Offline Computer
          • Creating Startup Scripts and Services
        • PART III - OPERATION
          • Starting the Nodes
          • Accessing Built-in Help
          • Generating Keys for the Block-producing Node
          • Setting Up Payment and Stake Keys
          • Registering Your Stake Address
          • Registering Your Stake Pool
          • Verifying Stake Pool Operation
          • Setting Up Dashboards
          • Configuring Slot Leader Calculations
          • Securing Your Stake Pool Using a Hardware Wallet
          • Setting up a Mithril Signer
        • PART IV - ADMINISTRATION & MAINTENANCE
          • Checking Stake Pool Rewards
          • Claiming Stake Pool Rewards
          • Delegating to a Stake Pool
          • Delegating to a Representative
          • Issuing a New Operational Certificate
          • Updating Stake Pool Information
          • Upgrading a Node
          • Retiring Your Stake Pool
          • Auditing Your nodes configuration
          • KES Key Rotation / Operational Certificate Companion Script
        • PART V - TIPS
          • Submitting a Simple Transaction
          • Transferring Files Using SSH
          • Updating Configuration Files
          • Implementing Peer Sharing
          • Uploading Pool Metadata to GitHub Pages
          • Obtaining a PoolTool API Key
          • Configuring Glasgow Haskell Compiler Runtime System Options
          • Reducing Missed Slot Leader Checks and Improving Cardano Node Performance
          • Increasing Swap File Size
          • Setting Up an External Passive Relay Node
          • Setting Up WireGuard
          • Monitoring Node Security Using OSSEC Server and Slack
          • Resetting an Installation
          • Fixing a Corrupt Blockchain
          • Verifying an ITN Stake Pool
          • Fixing the Mnemonic Staking Balance Bug
        • Appendix A - Best Practices Checklist
        • Appendix B - Cardano Resource Index
        • Discord Chat Channel
        • See Also
        • Credits
      • Guide: How to buy ADA
      • Guide: How to stake ADA
    • Monero: XMR
      • Guide | How to run your own Monero node
      • Guide: How to mine Monero
      • Create a XMR paper wallet
      • External Reading Material
        • Movie: Monero Means Money
        • Guide: Zero to Monero
        • Book: Mastering Monero
Powered by GitBook
On this page
  • Overview: What? Withdrawals? Owls?
  • Pre-requisites: Before you begin
  • Step 1: Prepare chain information
  • Step 2: Create change credentials file
  • Step 3: Broadcast change credentials
  • Next Steps
  • FAQ
Edit on GitHub
  1. Coins
  2. Ethereum: ETH

Update Withdrawal Keys for Ethereum Validator (BLS to Execution Change or 0x00 to 0x01) with ETHDO

A simplified guide to help you update your validators BLS 0x00 credentials to execution withdrawal 0x01 credentials using the ETHDO tool by wealdtech.

PreviousGuide | Recover Ethereum Validator Mnemonic SeedNextArchived Guides

Last updated 1 year ago

The following steps align with our . You may need to adjust file names and directory locations where appropriate. The core concepts remain the same.

Overview: What? Withdrawals? Owls?

  • Greetings, fellow ETH staker! If you were staking before April 2, 2021, setting ETH withdrawal (0x01) credentials was not yet released and so, this guide is relevant for you.

  • As of the Shapella upgrade, ETH validators with 0x00 credentials should update to 0x01 credentials to enable partial withdrawals, the sweeping of excess ETH > 32.

  • If your validator previously voluntarily exited or you now would like to stop validator duties, you'll need to set your withdrawal credentials to fully reclaim your staked ETH.

  • Your validator's mnemonic keys (the offline 24 word secrets)

  • A ETH staking node using Ubuntu or Linux, also known as online computer.

  • A USB storage key for moving files between the offline and online computer.

Step 1: Prepare chain information

  • If you no longer have a synced full node, use option 1.

  • Option 2 uses your own consensus client to generate chain information.

Option 1: Download "offline-preparation.json" file, save to USB key, transfer to offline air-gapped computer.
  1. On your online computer, open a terminal window or shell. Shortcut: CTRL + ALT + T

cd ~
wget https://github.com/wealdtech/ethdo/releases/download/v1.30.0/ethdo-1.30.0-linux-amd64.tar.gz
  1. Verify the checksum is valid. Located on the release page, the Checksum string is located in the corresponding sha256 file.

echo "6fbe587f522ad2eb8d6ce22dfdb15f7d163b491a670bf50e5acf12dd0f58125c ethdo-1.30.0-linux-amd64.tar.gz" | sha256sum -c

Successful verification occurs if you see "OK" in the resulting output.

ethdo-1.30.0-linux-amd64.tar.gz: OK
  1. Extract ethdo.

tar -xvf ethdo-1.30.0-linux-amd64.tar.gz
  1. Verify your validator's credential status with your index number. Replace<MY-VALIDATOR-INDEX> accordingly.

./ethdo validator credentials get --validator=<MY-VALIDATOR-INDEX>
BLS credentials: 0x0002a0addda8106aed690654c7af7af0bc5ccde321c8e5e2319ff432cee70396

If you have BLS credentials, continue with the rest of this guide. Otherwise, stop because ethdo will output "Ethereum execution address" and that means you've already set your withdrawal address!

  1. Download pre-generated offline preparation files made daily by EthStaker.

#mainnet
wget https://files.ethstaker.cc/offline-preparation-mainnet.tar.gz
wget https://files.ethstaker.cc/offline-preparation-mainnet.tar.gz.sha256

#goerli
wget https://files.ethstaker.cc/offline-preparation-goerli.tar.gz
wget https://files.ethstaker.cc/offline-preparation-goerli.tar.gz.sha256
  1. Verify the file's sha256 hash against the sha256 files to ensure correctness.

#mainnet
sha256sum offline-preparation-mainnet.tar.gz

#goerli
sha256sum offline-preparation-goerli.tar.gz

The output should match the contents of the .sha256 file. View the contents:

#mainnet
cat offline-preparation-mainnet.tar.gz.sha256

#goerli
cat offline-preparation-goerli.tar.gz.sha256
  1. Extract the tar file to find offline-preparation.json

#mainnet
tar -xvf offline-preparation-mainnet.tar.gz

#goerli
tar -xvf offline-preparation-goerli.tar.gz
  1. Using your USB key, copy both

  • the ethdo executable

  • and offline-preparation.json file

to your offline air-gapped computer.

Option 2: Generate "offline-preparation.json" file, save to USB key, transfer to offline air-gapped computer.
  1. On your online computer, open a terminal window or shell. Shortcut: CTRL + ALT + T

cd ~
wget https://github.com/wealdtech/ethdo/releases/download/v1.30.0/ethdo-1.30.0-linux-amd64.tar.gz
  1. Verify the checksum is valid. Located on the release page, the Checksum string is located in the corresponding sha256 file.

echo "6fbe587f522ad2eb8d6ce22dfdb15f7d163b491a670bf50e5acf12dd0f58125c ethdo-1.30.0-linux-amd64.tar.gz" | sha256sum -c

Successful verification occurs if you see "OK" in the resulting output.

ethdo-1.30.0-linux-amd64.tar.gz: OK
  1. Extract ethdo.

tar -xvf ethdo-1.30.0-linux-amd64.tar.gz
  1. Verify your validator's credential status with your index number. Replace<MY-VALIDATOR-INDEX> accordingly.

./ethdo validator credentials get --validator=<MY-VALIDATOR-INDEX>
BLS credentials: 0x0002a0addda8106aed690654c7af7af0bc5ccde321c8e5e2319ff432cee70396

If you have BLS credentials, continue with the rest of this guide. Otherwise, stop because ethdo will output "Ethereum execution address" and that means you've already set your withdrawal address!

./ethdo validator credentials set --prepare-offline

After a minute or two, you should see the text, "offline-preparation.json generated"

  1. Using your USB key, copy both

  • the ethdo executable

  • and offline-preparation.json file

to your offline air-gapped computer.

Step 2: Create change credentials file

Run ethdo with your mnemonic and withdrawal address. Transfer "change-operations.json" file via USB key back to online computer.
  1. On your offline air-gapped computer, disconnect any internet Ethernet cables or WiFi / bluetooth before continuing. Make sure you're truly offline!

  1. Open a terminal window or shell. Shortcut: CTRL + ALT + T

  1. After copying the ethdo executable and offline-preparation.json file to your offline computer's HOME directory, ensure the ethdo file has execute permissions.

chmod +x ethdo
  1. This ethdo command sets your validator credentials and the output is stored in a change-operations.json file. Replace <MY MNEMONIC PHRASE> AND <MY ETH WITHDRAW ADDRESS> accordingly.

./ethdo validator credentials set --offline --mnemonic="<MY MNEMONIC PHRASE>” --withdrawal-address=<MY ETH WITHDRAW ADDRRESS>
  1. After a few seconds, change-operations.json is created. It's normal for no message to be displayed.

  2. Triple check the resulting file for your withdraw address.

cat change-operations.json
  1. Ensure the field "to_execution_address": contains your withdraw address.

  1. Using your USB key, copy

  • change-operations.json file

back to your online computer.

  1. Power off your offline air-gapped computer.

Step 3: Broadcast change credentials

Simply run the set command to send your change.
  1. On the online computer, copy the change-operation.json to your home directory, where ethdo is also located.

  2. Run the following command to broadcast your withdrawal credentials.

./ethdo validator credentials set

Congrats! Your BLS to Execution change is now pending in a queue, waiting to be included in a block.

For your information:

  • Up to 16 BLS to Execution changes are included in each proposed block.

  • Depending on the withdrawal queue size, your withdrawal change may take up to a few days to be finalized.

  • Terminology: prefix of 0x01 = "Type 1" = execution withdrawal credentials = Withdrawals enabled

  • As a partial withdrawal, periodically every few days any amount of ETH over 32 will be automatically swept to your withdrawal address.

Learn more from:

  • Official Consensus Layer Withdrawal References

Need extra live support?

Like these guides?

Using my node, how can I check if my change is pending in the withdrawals queue?

Replace <MY VALIDATOR INDEX>. Adjust the REST API port number, if needed.

Lighthouse/Nimbus=5052. Prysm=3500. Lodestar=9596. Teku=5051.

curl -s "http://localhost:5052/eth/v1/beacon/pool/bls_to_execution_changes" | jq '.data | map(select(.message.validator_index=="<MY VALIDATOR INDEX>"))'

Example output:

[
  {
    "message": {
      "validator_index": "96193",
      "from_bls_pubkey": "0xb67aca71f04b673037b54009b760f1961f3836e5714141c892afdb75ec0834dce6784d9c72ed8ad7db328cff8fe9f13e",
      "to_execution_address": "0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f"
    },
    "signature": "0x988251748925e7a2966f28230c250e8c37495346d551e86fd89ea53148302b1145eb069647572801a689c9c1c5b8f2071019e652e01d92055d9aa99aa86696eb453889de38733caf2d5dce7a2786fed910365dcb7df082a62b130436fb9a1035"
  }
]

However, if the output shows [], this means your change is complete and no longer in the queue.

How much longer do I need to wait for this change to take effect?

Each block can add 16 blstoexecutionchangemessages and the time to process a BLS change depends on the size of the withdraw queue.

Find the size of the queue with the following command.

Adjust the REST API port number, if needed.

Lighthouse/Nimbus=5052. Prysm=3500. Lodestar=9596. Teku=5051.

curl -s http://localhost:5052/eth/v1/beacon/pool/bls_to_execution_changes | jq '.data | length'
How do I know the credential change worked?

Replace <MyValidatorIndex> and run the following ethdo command:

ethdo validator credentials get --validator=<MyValidatorIndex>

The resulting output will start with: Ethereum execution address

I voluntary exited a while ago and don't have a synced node anymore. What are my options?

Use Ethdo on an offline computer to create the exit message, as shown in step 2 above, and then perform step 3 using the alternative broadcast method with beaconcha.in

Can I use a Gnosis Safe address as my ETH withdrawal address?

Yes -- in fact, this is also a great idea as it allows you to rotate private keys (and keep the same public address) or use other more multi-sig strategies.

Is the fee-recipient address the same as this withdrawal address?

They can both be set to the same ETH address; however, understand that these are independent and withdrawal credentials have a different purpose than your fee recipient, which receives transaction fee tips from proposed blocks.

Partial Withdrawals vs Full Withdrawals?
  • Full validator withdrawal: To withdraw your entire stake on Ethereum and no longer perform validator duties. Exit your validator, and then after your exit request progresses through the withdraw queue while finally your full validator balance is transferred to your withdrawal address.

  • Partial validator withdrawal: To withdraw your validator’s earnings only. For a validator, any amount over the initial 32 ETH deposit is the earnings and is automatically swept every few days to the withdrawal address.

I don't have a mnemonic phrase. I used a private key.

In step 2, use this credentials set command instead.

ethdo validator credentials set --private-key=<my-priv-key> --withdrawal-address=<my-eth-withdrawal-address>
I want different withdrawal addresses for each of my validators.

In step 2, use this credentials set command instead.

ethdo validator credentials set --mnemonic="<my-mnemonic-phrase>" --path='m/12381/3600/<my iTH validator>/0' --withdrawal-address=<my-eth-withdrawal-address>

Where the path is the derivation path to your withdrawal key.

  • For example, m/12381/3600/i/0 is the path to a withdrawal key, where i starts at 0 for your 1st validator, 1 for your 2nd validator ...

I need to change my withdrawal address.

The only way to change withdrawal addresses is to perform a full withdrawal by exiting a validator and then, creating a new validator key as if starting the staking journey over again.

Pre-requisites: Before you begin

An ETH withdrawal address you control the private keys to, ideally one from a hardware wallet. DO NOT USE A EXCHANGE ADDRESS!

An offline air-gapped computer. Create a Linux Live USB like or ; needs a USB key.

Familiarize yourself with the .

Download Ethdo v1.30.0 from Github

Example output of a validator with BLS credentials.

Download Ethdo v1.30.0 from Github

Example output of a validator with BLS credentials.

Run the following command to call your consensus client and generate a list of active validators with relevant information for use on your offline computer. In order to generate this list from your local beacon node, is enabled; otherwise the default fallback beacon node, , will be called.

Double check your work as this is permanent once set!

FINAL REMINDER: DO NOT USE AN EXCHANGE ETH ADDRESS AS YOUR WITHDRAWAL ADDRESS

If you no longer have a synced full node, you can alternatively upload change-operation.json file to

Next Steps

Prysm:

Nimbus:

Lighthouse:

Teku:

Lodestar:

Ethdo official withdrawals guide:

Attestant's Post:

Find Ethstaker frens on the Discord!

Use reddit: , or , or

: We build this guide exclusively by community support!πŸ™

Feedback or pull-requests:

FAQ

Alternatively, check your favorite beacon chain explorer such as and for the 0x01 credentials.

reference:

πŸ¦‰
πŸ‘
πŸ›‘
πŸ›‘
πŸ›‘
πŸ›‘
βœ…
βœ…
πŸ›‘
πŸ›‘
πŸ›‘
πŸ›‘
⏩
πŸ“š
Ubuntu
Tails
Ethereum.org Staking Withdrawals guide
https://github.com/wealdtech/ethdo/releases
https://github.com/wealdtech/ethdo/releases
ensure the REST API
http://mainnet-consensus.attestant.io
πŸ’‘
https://beaconcha.in/tools/broadcast
https://docs.prylabs.network/docs/wallet/withdraw-validator
https://nimbus.guide/withdrawals.html
https://lighthouse-book.sigmaprime.io/voluntary-exit.html#withdrawal-of-exited-funds
https://docs.teku.consensys.net/HowTo/Withdrawal-Keys
https://chainsafe.github.io/lodestar/reference/cli/#validator-bls-to-execution-change
https://github.com/wealdtech/ethdo/blob/master/docs/changingwithdrawalcredentials.md
https://www.attestant.io/posts/understanding-withdrawals/
Ethstaker
r/Ethstaker
DMs
r/coincashew
πŸ™
Tips much appreciated
Support us on Gitcoin Grants
https://github.com/coincashew/coincashew
beaconcha.in
etherscan.io
https://safe.global
❓
mainnet guide
Nimbus CL says: WITHDROWLS ON