How to Upgrade Your Avail Validator
When upgrading Avail nodes there are two options, a faster method and a slower (but safer) method. Both are detailed below, but you only need to use one of them.
Fast Upgrade
While a rapid upgrade is possible, it carries inherent risks if done on a validator node. For instance, if you proceed with the upgrade on a validator node and encounter issues such as database corruption, there's a chance of prolonged downtime. This could lead to your node being removed from the active validator set due to unresponsiveness.
This upgrade process is appropriate for non-validator nodes. However, this upgrade process is still possible on validator nodes with careful consideration.
The fast upgrade steps are:
- Stop the Avail node.
sudo systemctl stop avail.service
- Locate your Avail binary, create a backup of the current binary, and then uninstall the existing binary by deleting the binary. Proceed to download the most recent binary announced in Discord, which will replace the previous binary version.
To provide an example, assuming your existing binary is located at
/home/avail/avail-node/
and is nameddata-avail
, and you used the validator setup guidelines while obtaining a pre-built binary from the Avail GitHub repository, proceed as outlined below.
cd /home/avail/avail-node/
mv data-avail data-avail-backup
wget https://github.com/availproject/avail/releases/download/v1.10.0.0/x86_64-ubuntu-2004-data-avail.tar.gz
tar -xvf data-avail-linux-amd64.tar.gz
mv data-avail-linux-amd64 data-avail
rm data-avail-linux-amd64.tar.gz
- Start the Avail node again.
sudo systemctl start avail.service
- Ensure your node starts syncing with the network, view the logs from the running service.
journalctl -f -u avail.service
- Also check that your node is visible on telemetry and the version matches the upgrade version.
Slow & Safe Upgrade
This upgrade procedure is most appropriate for validator nodes exclusively and is unnecessary for other types of nodes, such as full, archive, rpc, and so forth. Upgrading a Avail node safely is a careful process to ensure a smooth transition without disruption to the network. Here's a step-by-step guide on how to upgrade a Avail node, including the process of switching nodes using rotated keys:
-
Preparing for the Upgrade:
- Ensure you have a backup of your node's data and keystore files. This ensures you can restore your node in case of any issues during the upgrade process. Familiarize yourself with the release notes and documentation of the new Avail version to understand any specific instructions or requirements.
-
Setting up Node B:
- Install and set up the new version of Avail on a separate server or machine. This will be Node B, which will eventually replace Node A. Configure Node B with the necessary configuration files, including the customizations you had on Node A. Ensure that Node B is fully synchronized with the Avail network before proceeding.
-
Generating Rotated Keys:
- Generate a new set of keys for Node B using
author_rotateKeys
.
- Generate a new set of keys for Node B using
-
Updating Session Keys:
- Open Avail Apps and navigate to Network โ Staking (opens in a new tab). You will be able to select from a hidden menu the option to change session keys.
- Can enter the hex-encoded value obtained from
author_rotateKeys
and click on Set Session Key.
- You will now be able to see the new and old hex-encoded value. In the next epoch or two it will only show the new hex-encoded value.
- After a few epochs Node B will be performing the validator tasks. You must ensure this by looking in the logs for sealed blocks. You should see
๐ Prepared block for proposing
appear in the logs of Node B and stop appearing Node A.
-
You can now upgrade Node A. You can repeat the process to switch back to Node A.
ENSURE THE NODE HAS SWITCHED
Before turning Node A off you must ensure Node B has become the active validator. In Avail Apps it may show the switch, however there is an epoch delay before the node
fully switches over. The best is to look in the logs and confirm the new node is sealing the blocks.