How to manage signer key rotations as a Celo Validator.Documentation Index
Fetch the complete documentation index at: https://docs.celo.org/llms.txt
Use this file to discover all available pages before exploring further.
Why Rotate Keys?
As detailed in the Celo account roles description page, Celo Locked CELO accounts can authorize separate signer keys for various roles such as voting or validating. This way, if an authorized signer key is lost or compromised, the Locked CELO account can authorize a new signer to replace the old one, without risking the key that custodies funds. This prevents losing an authorized signer key from becoming a catastrophic event. In fact, it is recommended as an operational best practice to regularly rotate keys to limit the impact of keys being silently compromised.Validator Signer Rotation
Because the Validator signer key is constantly in use to sign consensus messages, special care must be taken when authorizing a new Validator signer key. The following steps detail the recommended procedure for rotating the validator signer key of an active and elected validator:- Create a new Validator instance as detailed in the Deploy a Validator section of the getting started documentation. When using a proxy, additionally create a new proxy and peer it with the new validator instance, as described in the same document. Wait for the new instances to sync before proceeding. Please note that when running the proxy, the
--proxy.proxiedvalidatoraddressflag should reflect the new validator signer address. Otherwise, the proxy will not be able to peer with the validator.
- Authorize the new Validator signer key with the Locked CELO Account to overwrite the old Validator signer key.
- If
VALIDATOR_ACCOUNT_ADDRESScorresponds to a key you possess:
- If
VALIDATOR_ACCOUNT_ADDRESSis aReleaseGoldcontract:
- Leave all validator and proxy nodes running until the next epoch change. At the start the next epoch, the new Validator signer should take over participation in consensus.
- Verify that key rotation was successful. Here are some ways to check:
- Open
baklava-blockscout.celo-testnet.org/address/<SIGNER_TO_AUTHORIZE>/validationsto confirm that blocks are being proposed. - Open
baklava-celostats.celo-testnet.orgto confirm that your node is signing blocks. - Run
celocli validator:signed-blocks --signer $SIGNER_TO_AUTHORIZEwith the new validator signer address to further confirm that your node is signing blocks.
- Shut down the validator instance with the now obsolete signer key.