Skip to main content

Upgrading the Node

The chainspec.toml contains a section to indicate from which era the given casper-node version should start running.

[protocol]
# This protocol version becomes active at the start of this era.
activation_point = 100

At every block finalization, the casper-node looks for newly configured versions. When a new version is configured, the running node will look at future era_id in the chainspec.toml file. This will be the era before where the current casper-node will cleanly shut down.

The casper-node-launcher will detect a clean exit 0 condition and start the next version of the casper-node.

Upgrading Protocol Versions

All Casper Mainnet participants are requested to stage the upgrade of their nodes to a new version of casper-node immediately. Staging an upgrade is a process in which you tell your node to download the upgrade files and prepare them so that they can automatically be applied at the pre-defined activation point.

Do not restart the node, only run the commands provided. The upgrade will automatically occur at the activation point.

Upgrade Staging Instructions

The process to upgrade your node is very straightforward. Log in to your node, and execute the following command on Mainnet:

sudo -u casper /etc/casper/node_util.py stage_protocols casper.conf

On Testnet, use casper-test.conf:

sudo -u casper /etc/casper/node_util.py stage_protocols casper-test.conf

Note: To only view the list of staged and unstaged protocols, use this command: sudo -u casper /etc/casper/node_util.py check_protocols casper.conf

Verifying Successful Staging

After you have successfully executed the staging commands, wait a few minutes for a new block to be issued before checking that your node is correctly staged with the upgrade. After a few minutes, take a look at your status end-point, as follows:

curl -s http://127.0.0.1:8888/status | jq .next_upgrade

You should expect this output if properly staged, prior to upgrading:

$ curl -s localhost:8888/status | jq .next_upgrade
{
"activation_point": 4968,
"protocol_version": "1.4.6"
}

If you see null after waiting for a few minutes, then your upgrade staging was not executed successfully.

Note: The protocol version will change as per the next upgrade available.