Nebulae Upgrade

Nebulae upgrade

Upgrade information

On-chain governance proposal attains consensus

Proposal is the reference on-chain governance proposal for this upgrade, which has passed with overwhelming community support. Neither core developers nor core funding entities control the governance, and this governance proposal has passed in a fully decentralized way.

Upgrade may take place July 20, 2023

The upgrade will take place at a block height of 9,522,000. At the time of writing, and at current block times, this block height corresponds approximately to 2022-09-19 08:00:00 UTC .

Chain-id will remain the same

The chain-id of the network will remain the same, titan-1. This is because an in-place migration of state will take place, i.e., this upgrade does not export any state.

Check before the upgrade

System requirement

32GB RAM is recommended to ensure a smooth upgrade.
If you have less than 32GB RAM, you might try creating a swapfile to swap an idle program onto the hard disk to free up memory. This can allow your machine to run the binary than it could run in RAM alone.
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Backups

Prior to the upgrade, validators are encouraged to take a full data snapshot. Snapshotting depends heavily on infrastructure, but generally this can be done by backing up the $HOME/.rizon directory. If you use Cosmovisor to upgrade, by default, Cosmovisor will backup your data upon upgrade.

Risks

As a validator performing the upgrade procedure on your consensus nodes carries a heightened risk of double-signing and being slashed. The most important piece of this procedure is verifying your software version and genesis file hash before starting your validator and signing.
The riskiest thing a validator can do is discover that they made a mistake and repeat the upgrade procedure again during the network startup. If you discover a mistake in the process, the best thing to do is wait for the network to start before correcting it.

Preparing for the Nebulae upgrade

Join network first

Use rizond to join Titan mainnet or Groot testnet

Upgrade manually

Run rizond v0.4.1 till upgrade height 9522000, the node will panic:
ERR UPGRADE "Nebulae" NEEDED at height: 9522000
panic: UPGRADE "Nebulae" NEEDED at height: 9522000
After stopping the node, install rizond v0.5.1 and simply restart node by rizond start.
cd $RIZON_SOURCE_DIRECTORY
git checkout v0.5.1
make install
rizond start

Upgrade using Cosmovisor

Install and setup Cosmovisor

We highly recommend validators use cosmovisor to run their nodes. This will make low-downtime upgrades smoother, as validators don't have to manually upgrade binaries during the upgrade, and instead can preinstall new binaries, and cosmovisor will automatically update them based on on-chain SoftwareUpgrade proposals.
You should review the docs for cosmovisor located here
If you choose to use cosmovisor, please continue with these instructions:
To install Cosmovisor:
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/[email protected]
After this, you must make the necessary folders for cosmovisor in your daemon home directory ($HOME/.rizon).
mkdir -p $HOME/.rizon/cosmovisor/genesis/bin
mkdir -p $HOME/.rizon/cosmovisor/upgrades/Gargantua/bin
Cosmovisor requires some ENVIRONMENT VARIABLES be set in order to function properly. We recommend setting these in your .profile so it is automatically set in every session.
For validators we recommend setting
  • DAEMON_ALLOW_DOWNLOAD_BINARIES=false for security reasons
  • DAEMON_LOG_BUFFER_SIZE=512 to avoid a bug with extra long log lines crashing the server.
  • DAEMON_RESTART_AFTER_UPGRADE=true for unattended upgrades
echo "# Setup Cosmovisor" >> ~/.profile
echo "export DAEMON_NAME=rizond" >> ~/.profile
echo "export DAEMON_HOME=$HOME/.rizon" >> ~/.profile
echo "export DAEMON_ALLOW_DOWNLOAD_BINARIES=false" >> ~/.profile
echo "export DAEMON_LOG_BUFFER_SIZE=512" >> ~/.profile
echo "export DAEMON_RESTART_AFTER_UPGRADE=true" >> ~/.profile
echo "export UNSAFE_SKIP_BACKUP=true" >> ~/.profile
source ~/.profile
You may leave out UNSAFE_SKIP_BACKUP=true, however the backup takes a decent amount of time and public snapshots of old states are available.
Finally, you should copy the current rizond binary into the cosmovisor/genesis folder.
cp $GOPATH/bin/rizond $DAEMON_HOME/cosmovisor/genesis/bin
cp $GOPATH/bin/rizond $DAEMON_HOME/cosmovisor/upgrades/Gargantua/bin

Install new binary for upgrade

To prepare for the upgrade, you need to create some folders, and build and install the new binary.
mkdir -p $DAEMON_HOME/cosmovisor/upgrades/Nebulae/bin
git clone https://github.com/rizon-world/rizon
cd rizon
git checkout v0.5.1
make install
cp $GOPATH/bin/rizond $DAEMON_HOME/cosmovisor/upgrades/Nebulae/bin

Run Cosmovisor

Now cosmovisor will run with the current binary, and will automatically upgrade to this new binary at the appropriate height if run with:
cosmovisor start --x-crisis-skip-assert-invariants

Rollback plan

During the network upgrade, RIZON teams will be keeping an ever vigilant eye and communicating with operators on the status of their upgrades. During this time, the core teams will listen to operator needs to determine if the upgrade is experiencing unintended challenges. In the event of unexpected challenges, the core teams, after conferring with operators and attaining social consensus, may choose to declare that the upgrade will be skipped.
Steps to skip this upgrade proposal are simply to resume the network with the (downgraded) v0.4.1 binary using the following command:
rizond start --unsafe-skip-upgrade 9522000