See issue: https://github.com/cosmos/cosmos-sdk/issues/11504
Status: WIP
Authors:
genesis.json
to a new file that is compatible with the new versionmigrate
command to migrate the genesis.json
evmosd migrate
Cases: security vulnerability
An chain upgrade can be done automatically or
Automated upgrades can be executed via upgrade proposals and also by manually setting a fork height that downloads the new binary and performs a migration
Cosmovisor is a process manager for Cosmos SDK applications that monitors the governance module for incoming chain upgrade proposals. If it sees a proposal that gets approved, cosmovisor can automatically download the new binary, stop the current binary, switch from the old binary to the new one, and finally restart the node with the new binary.
Cosmovisor allows validators and node operators to:
config
changes that are required in the newer version.Cosmovisor can be used for
NOTE: For additional instructions on how to set up Cosmovisor and its usage, check the original documentation here.
Halt the node by setting a --halt-height
when starting your node:
evmosd start --halt-height=<height>
Export genesis.json
evmosd export <moniker> --height=<height>
Important: Make sure the new chain height is equal to the value set in
halt-height
+ 1
Migrate the genesis.json
file to make it compatible with the new version. You can skip this if there are not breaking API changes.
Create a new node using the init
command.
evmosd init <moniker> --chain-id=$CHAIN_ID
Copy the genesis into your evmosd
config.
cp genesis.json ~/.evmosd/config/genesis.json
Start the node using start
:
evmosd start
Issues with upgrades can be either because the genesis.json
file is not valid (in the case of manual upgrades) or because the store migration failed.
Note: If the IBC client expires, it can be recovered with a governance proposal.
The new version will have no data
Set up a halt-height
to gracefully halt your node. Once it does, you will have to manually download the new binary and restart your node.