Performing a chain upgrade
When consensus-breaking changes are made to the Penumbra protocol, node operators must coordinate upgrading to the new version of the software at the same time. Penumbra uses a governance proposal for scheduling upgrades at a specific block height.
Upgrade process abstractly
At a high level, the upgrade process consists of the following steps:
- Governance proposal submitted, specifying explicit chain height
n
for halt to occur. - Governance proposal passes.
- Chain reaches specified height
n-1
, nodes stop generating blocks. - Manual upgrade is performed on each validator and fullnode:
- Install the new version of pd.
- Apply changes to
pd
andcometbft
state viapd migrate
. - Restart node.
After the node is restarted on the new version, it should be able to talk to the network again. Once enough validators with sufficient stake weight have upgraded, the network will resume generating blocks.
Performing a chain upgrade
Consider performing a backup as a preliminary step during the downtime, so that your node state is recoverable.
- Stop both
pd
andcometbft
. Depending on how you run Penumbra, this could meansudo systemctl stop penumbra cometbft
. - Download the latest version of
pd
and install it. Runpd --version
and confirm you see the correct version. - Optionally, use
pd export
to create a snapshot of thepd
state. - Apply the migration with
pd migrate --home PD_HOME --comet-home COMETBFT_HOME
. If using the default home locations (frompd network join
), you can omit the paths and just runpd migrate
.
Finally, restart the node, e.g. sudo systemctl restart penumbra cometbft
. Check the logs, and you should see the chain progressing
past the halt height n
.