Story Virgil hardfork upgrade without stopping the binary

Background

While Story mainnet is running at the singularity stage, there are a few small fixes and feature enhancements that we think should be included during this stage. This is because most of the staking features and reward distribution are disabled at the singularity stage. We name this hard fork upgrade: Virgil

Meanwhile, upgrades using cosmos-sdk’s native upgrade module require stopping the old binary at the upgrade height and starting the new binary, which causes network downtime and more friction for new node syncing from block 0 (as nodes have to switch binary at each hard fork height in order to continue syncing). We want to minimize these issues during the upgrade, especially during the network bootstrap phase.

Proposal

Since the proposed changes for the Virgil upgrade is small, we propose to use an Ethereum-style hardfork upgrade, which hardcodes the upgrade height in the code and makes the new binary code backward-compatible. This solves the above issues mentioned:

  • The node operators can switch from the old binary to the new binary at any time before the block height. Since it gives much more time for node operators to switch the binary, it prevents the network halt at the upgrade height.
  • The new node joining the network can directly use the new binary to sync from block 0
4 Likes

can you link some other researches in this topic here?

4 Likes