Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document the need to set custom validator key values after VC switch #473

Merged
merged 1 commit into from
Dec 19, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 34 additions & 7 deletions website/docs/Support/SwitchClient.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,23 @@ sidebar_label: Switch Clients

## Overview

It may be desirable to switch clients if you are using one that is close to a supermajority of validators. If any one client has a supermajority of the chain, there is a risk that a [consensus bug could lead to a mass slashing](https://www.symphonious.net/2021/09/23/what-happens-if-beacon-chain-consensus-fails/) and validators on this client would lose 3/4th of their staked ETH in that worst-case scenario.
It may be desirable to switch clients if you are using one that is close to a supermajority of validators. If any one
client has a supermajority of the chain, there is a risk that a
[consensus bug could lead to a large inactivity leak](https://www.symphonious.net/2021/09/23/what-happens-if-beacon-chain-consensus-fails/)
and validators on this client would lose almost all of their staked ETH in that worst-case scenario.

Choose any consensus client and any execution client you'd like to use, and then follow the instructions below.

Note that if you change the execution client, you either need sufficient disk space to sync two execution clients, or accept downtime while your new execution client syncs.
Note that if you change the execution client, you either need sufficient disk space to sync two execution clients, or
accept downtime while your new execution client syncs.

> `sudo` commands for docker are necessary if your user is not part of the `docker` group. If `docker ps` does not succeed, you need to use `sudo` for `docker` or `docker-compose`, or make your user part of the `docker` group.

## Switching to web3signer

With web3signer, the keys do not need to be moved when switching the consensus client. If keys are currently loaded directly into the validator client, which is the default, they need to be just as carefully moved as when switching between consensus clients without web3signer.
With web3signer, the keys do not need to be moved when switching the consensus client. If keys are currently loaded
directly into the validator client, which is the default, they need to be just as carefully moved as when switching
between consensus clients without web3signer.

### 1. Delete validator keys

Expand Down Expand Up @@ -55,7 +61,14 @@ This carries a slashing risk, take extreme care.

### 5. Verify that validators are attesting again

Check https://beaconcha.in/ for your validator public keys, as well as the logs of `consensus` and, if not Nimbus or Teku, `validator` services.
Check https://beaconcha.in/ for your validator public keys, as well as the logs of `consensus` and, if not using an
`client-allin1.yml`, `validator` services.

### 6. Reapply any custom per-validator settings

Custom fee recipient, graffiti and gas limit are stored by the validator client. By default, there are no custom
settings. If, however, you used `./ethd keys set-recipient`, `./ethd keys set-gas` or `./ethd keys set-graffiti`
before, you need to do so again after switching to a new validator client.

## Switching only the consensus client, keys in web3signer

Expand All @@ -79,9 +92,16 @@ remain in web3signer, this does not carry a slashing risk.

Nimbus and Prysm register the web3signer keys automatically on startup, you need not register them manually.

### 4. Verify that validators are attesting
### 4. Verify that validators are still attesting

Check https://beaconcha.in/ for your validator public keys, as well as the logs of `consensus` and, if not using an
`client-allin1.yml`, `validator` services.

Check https://beaconcha.in/ for your validator public keys, as well as the logs of `consensus` and, if not Nimbus or Teku, `validator` services.
### 5. Reapply any custom per-validator settings

Custom fee recipient, graffiti and gas limit are stored by the validator client. By default, there are no custom
settings. If, however, you used `./ethd keys set-recipient`, `./ethd keys set-gas` or `./ethd keys set-graffiti`
before, you need to do so again after switching to a new validator client.

## Switching only the consensus client, keys *not* in web3signer

Expand Down Expand Up @@ -118,7 +138,14 @@ This carries a slashing risk, take extreme care.

### 5. Verify that validators are attesting again

Check https://beaconcha.in/ for your validator public keys, as well as the logs of `consensus` and, if not Nimbus or Teku, `validator` services.
Check https://beaconcha.in/ for your validator public keys, as well as the logs of `consensus` and, if not using an
`client-allin1.yml`, `validator` services.

### 6. Reapply any custom per-validator settings

Custom fee recipient, graffiti and gas limit are stored by the validator client. By default, there are no custom
settings. If, however, you used `./ethd keys set-recipient`, `./ethd keys set-gas` or `./ethd keys set-graffiti`
before, you need to do so again after switching to a new validator client.

## Switching the execution client if downtime is acceptable

Expand Down
Loading