Upgrade service definition

Upgrading Cosmos Hub applications is very painful is very painful.

I’ve been doing some thinking on what we can do to make it easier. Iris and Regen have been doing work to make a subset of possible upgrades to Cosmos SDK apps easier.

I’ve always been interested in solving for the most general case.

Ie. Upgrades that change the chain id, require not trivial modifications to internal state, make non trivial changes to the consensus algorithm etc.

Even bigger ideas I want to tangle are validators already run software for many blockchains, running software for cosmos zones will also require running non-Tendermint applications in the future so I’d like to define an upgrade supervisor in a sufficiently general way that blockchains that aren’t Tendermint or Cosmos SDK based can reasonably target this api.

Here are some thoughts on requirements.

  1. To be able to setup binaries and migration procedures ahead of time and have it automagically run

  2. Resilience during rolling upgrades so that for instance p2p handshakes against unupgraded nodes are retried.

  3. Preconfigure antidouble sign/ key management

  4. Sidecar processes like gaiacli’s reserver to automagically launch.

  5. Reports to other infrastructure that upgrade has happened.