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.
Lighthouse | Prysm | Lodestar
Nimbus | Teku
sudo systemctl stop beacon-chain validator
sudo systemctl stop beacon-chain
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
Nimbus
Teku
Prysm
Lodestar
lighthouse account validator slashing-protection export <lighthouse_interchange.json>
To be implemented
teku slashing-protection export --to=<FILE>
prysm.sh validator slashing-protection export --datadir=/path/to/your/wallet --slashing-protection-export-dir=/path/to/desired/outputdir
./lodestar account validator slashing-protection export --network mainnet --file 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.
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.
🛑
Using your new consensus client, run the following command and update the relevant path to import your slashing database from 2 steps ago.
Lighthouse
Nimbus
Teku
Prysm
Lodestar
lighthouse account validator slashing-protection import <my_interchange.json>
To be implemented
teku slashing-protection import --from=<FILE>
prysm.sh validator slashing-protection import --datadir=/path/to/your/wallet --slashing-protection-json-file=/path/to/desiredimportfile
./lodestar account validator slashing-protection import --network mainnet --file interchange.json
Lighthouse | Prysm | Lodestar
Nimbus | Teku
sudo systemctl start beacon-chain validator
sudo systemctl start beacon-chain
Check the logs to verify the services are working properly and ensure there are no errors.
Lighthouse | Prysm | Lodestar
Nimbus | Teku
sudo systemctl status beacon-chain validator
sudo systemctl status beacon-chain
Finally, verify your validator's attestations are working with public block explorer such as
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.