Just copy and paste your priv_validator_key.json
and priv_validator_state.json
into your SignCTRL configuration directory.
Before starting any validator in the set, always make sure no two validators are assigned to the same start_rank
.
If your SignCTRL node has shut down, it is paramount that the validator daemon is restarted before SignCTRL is restarted.
⚠️ Do NOT leave the validator daemon running and start SignCTRL! This will lead to double-signing!
This is merely a workaround for now. The issue is further investigated in this issue.
It doesn't matter which order you start your validators in. Starting ranks 2..n
prior to rank 1
is just as safe to do as vice-versa because ranks 2..n
will always wait for rank 1
to sign at least one block before they start counting blocks missed in a row.
Follow the Upgrade Guide.
- Stop the validator daemon.
- Wait for SignCTRL to try redialing the validator (
retry_dial_after
in theconfig.toml
). - Start the validator daemon.
Follow the Migration Guide.
At this point in time, it's not possible to add or remove validator's to/from the set on the fly.
This is a protection mechanism rooted in the signctrl_state.json
file. It protects against launching a validator with an rank that has been rendered obsolete by a rank update in the set, which is the case if the requested height differs more than threshold+1
from the last height persisted in the state file. In order to fix this, please follow the steps below.
- Check each validator's rank via
signctrl status
, i.e. validator 1 is ranked 1st and validator 2 us ranked 3rd, which means that rank 2 is free. - Update the validator's
start_rank
in theconfig.toml
to the free rank. - Delete the
signctrl_state.json
file. - Start SignCTRL.