Switching / Migrating Consensus Client

The key takeaway in this process is to avoid running two validator 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 consensus 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.

sudo -u consensus /usr/local/bin/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 consensus client and validator in steps 4 and 5. 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.

sudo -u consensus /usr/local/bin/lighthouse account validator slashing-protection import <my_interchange.json>
sudo systemctl start consensus validator

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

sudo systemctl status consensus 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