Switching / Migrating Consensus Client

The key takeaway in this process is to avoid running two consensus clients simultaneously. You want to avoid being punished by a slashing penalty, which causes a loss of ether.

🛑 1 Stop old beacon chain and old validator.

In order to export the slashing database, the validator needs to be stopped.

sudo systemctl stop beacon-chain validator

💽 2 Export slashing database (Optional)

EIP-3076 implements a standard to safety migrate validator keys between consensus clients. This is the exported contents of the slashing database.

Update the export .json file location and name.

lighthouse account validator slashing-protection export <lighthouse_interchange.json>

🚧 3 Setup and install new validator / beacon chain

Now you need to setup/install your new validator but do not start running the systemd processes. Be sure to thoroughly follow your new validator's Section 4. Configure a ETH2 beacon chain and validator. You will need to build/install the client, configure port forwarding/firewalls, and new systemd unit files.

Pro Tip: During the process of re-importing validator keys, wait at least 13 minutes or two epochs to prevent slashing penalties. You must avoid running two consensus clients with same validator keys at the same time.

🛑 Critical Step: Do not start any systemd processes until either you have imported the slashing database or you have waited at least 13 minutes or two epochs.

📂 4 Import slashing database (Optional)

Using your new consensus client, run the following command and update the relevant path to import your slashing database from 2 steps ago.

lighthouse account validator slashing-protection import <my_interchange.json>

🌠 5 Start new validator and new beacon chain

sudo systemctl start beacon-chain validator

🔥 6 Verify functionality

Check the logs to verify the services are working properly and ensure there are no errors.

sudo systemctl status beacon-chain validator

Finally, verify your validator's attestations are working with public block explorer such as

https://beaconcha.in/

Enter your validator's pubkey to view its status.

🧯 7 Update Monitoring with Prometheus and Grafana

Review section 6 and change your prometheus.yml. Ensure prometheus is connected to your new consensus client's metrics port. You will also want to import your new consensus client's dashboard.