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