Validator Instructions for Changeover Procedure
More details available in Changeover Procedure documentation.
A major difference between launching a new consumer chain vs. onboarding a standalone chain to ICS is that there is no consumer genesis available for the standalone chain. Since a standalone chain already exists, its state must be preserved once it transitions to being a consumer chain.
Timeline
Upgrading standalone chains can be best visualised using a timeline, such as the one available Excalidraw graphic by Stride.
There is some flexibility with regards to how the changeover procedure is executed, so please make sure to follow the guides provided by the team doing the changeover.
1. ConsumerAdditionProposal
on provider chain
This step will add the standalone chain to the list of consumer chains secured by the provider.
This step dictates the spawn_time
. After spawn_time
the CCV state (initial validator set of the provider) will be available to the consumer.
To obtain it from the provider use:
gaiad q provider consumer-genesis stride-1 -o json > ccv-state.json
jq -s '.[0].app_state.ccvconsumer = .[1] | .[0]' genesis.json ccv-state.json > ccv.json
Transformation of the exported consumer genesis state to the target version of the consumer might be needed in case the provider and consumer formats are incompatible.
Refer to the compatibility notes here to check if data transformation is needed for your case.
Instructions on how to transform the exported CCV genesis state (ccv-state.json
in the example above) to the required target version can be found here
2. SoftwareUpgradeProposal
on the standalone/consumer chain
This upgrade proposal will introduce ICS to the standalone chain, making it a consumer.
3. Assigning a consumer key
After spawn_time
, make sure to assign a consumer key if you intend to use one.
Instructions are available here
4. Perform the software upgrade on standalone chain
Please use instructions provided by the standalone chain team and make sure to reach out if you are facing issues. The upgrade preparation depends on your setup, so please make sure you prepare ahead of time.
The ccv.json
from step 1. must be made available on the machine running the standalone/consumer chain at standalone chain upgrade_height
. This file contains the initial validator set and parameters required for normal ICS operation.
Usually, the file is placed in $NODE_HOME/config
but this is not a strict requirement. The exact details are available in the upgrade code of the standalone/consumer chain.
Performing this upgrade will transition the standalone chain to be a consumer chain.
After 3 blocks, the standalone chain will stop using the "old" validator set and begin using the provider
validator set.
FAQ
Can I reuse the same validator key for the consumer
chain that I am already using on the standalone
chain? Will I need to perform a AssignConsumerKey
tx with this key before spawn time?
Validators must either assign a key or use the same key as on the provider
.
If you are validating both the standalone
and the provider
, you can use your current standalone
key with some caveats:
- you must submit an
AssignConsumerKey
tx with your currentstandalone
validator key - it is best to submit
AssignConsumerKey
tx beforespawn_time
- if you do not submit the Tx, it is assumed that you will be re-using your
provider
key to validate thestandalone/consumer
chain
Can I continue using the same node that was validating the standalone
chain?
Yes.
Please assign your consensus key as stated above.
Can I set up a new node to validate the standalone/consumer
chain after it transitions to Interchain Security?
Yes.
If you are planning to do this please make sure that the node is synced with standalone
network and to submit AssignConsumerKey
tx before spawn_time
.
What happens to the standalone
validator set after it transitions to Interchain Security?
The standalone
chain validators will stop being validators after the first 3 blocks are created while using Interchain Security. The standalone
validators will become governors and still can receive delegations if the consumer
chain is using the consumer-democracy
module.
Governors DO NOT VALIDATE BLOCKS.
Instead, they can participate in the governance process and take on other chain-specific roles.
Credits
Thank you Stride team for providing detailed instructions about the changeover procedure.