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_afterin 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_rankin theconfig.tomlto the free rank. - Delete the
signctrl_state.jsonfile. - Start SignCTRL.