🛡️Switching / Migrating Execution Client

Important reasons why you would want to switch Execution Clients:

🦉 Client Diversity: Improve Ethereum's resilience by using a minority client

💾 Unique Features: Each client has their own strengths, i.e. faster sync, lower resource requirements, different programming language, unique abilities

🔥Optional Tip: Before switching, it is possible to minimize downtime and keep your validator online by using a failover node, either your own EL/CL stack, or a public service.

Here are some public options:

However, as validator downtime incurs minimal penalties, the added complexity might not be worth your time and extra work configuring a failover option.

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

Option 1: Automated One-Liner

Simply copy and paste the command into your terminal.

Open source source code available here: https://github.com/coincashew/client-switcher

sudo /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/coincashew/client-switcher/master/install.sh)"

Option 2: Manual Method

Step 1: Remove OLD Execution Client

Stop execution client and remove the service user, data paths, binaries and service files.

# Stop Execution Client
sudo systemctl stop execution
sudo systemctl disable execution

# Remove service file
sudo rm /etc/systemd/system/execution.service

# Nethermind
sudo rm -rf /usr/local/bin/nethermind
sudo rm -rf /var/lib/nethermind

# Besu
sudo rm -rf /usr/local/bin/besu
sudo rm -rf /var/lib/besu

# Geth
sudo rm -rf /usr/local/bin/geth
sudo rm -rf /var/lib/geth

# Erigon
sudo rm -rf /usr/local/bin/erigon
sudo rm -rf /var/lib/erigon

# Reth
sudo rm -rf /usr/local/bin/reth
sudo rm -rf /var/lib/reth

# Remove service user
sudo userdel execution
Step 2: Install NEW Execution Client

Follow the instructions found under section: Installing a new Execution Client.


🔥Tip: As well as being a minority client, Nethermind is known to be incredibly fast at syncing, often as quick as 2 hours with fast NVME drives.

Step 3: Restart Consensus Client

Ensure the consensus client establishes a connection to the new execution client.

sudo systemctl restart consensus
Step 4: Update Monitoring tools

Promentheus and Grafana:

  • Revisit the monitoring guide and update your prometheus.ymlconfiguration for the new execution client.

  • Ensure prometheus is connected to your new execution client's metrics port 6060.

  • Also import your new execution client's dashboard.

Beaconcha.in Mobile App:

  • To receive new notifications, update your app's settings to indicate you're using a different execution client

Congrats on switching to a new execution client!

Last updated