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.

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

sudo systemctl stop beacon-chain validator

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>

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.

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>
sudo systemctl start beacon-chain validator

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.

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.

Last updated