MainNet Release Procedure

Operational (non-technical) instructions on releasing an upgrade to MainNet

1. Protocol Upgrade Preparation

(See linked preparation docs where applicable.)

2. Keep Clear Communication

Keep the following stakeholders in the loop along the way:

  • Pocket Network Discord Server; Beta TestNet and MainNet

    • Beta TestNet: https://discord.com/channels/553741558869131266/1384591252758200330

    • MainNet: https://discord.com/channels/553741558869131266/1234943674903953529

  • Grove Pocketd Discord: https://discord.com/channels/824324475256438814/1138895490331705354

  • Exchanges that support Pocket Network and communicate via telegram:

    • https://github.com/pokt-network/poktroll/blob/main/.github/workflows/telegram-send-message.yml

Reference previous announcements:

  • Beta TestNet Announcement Channel: https://discord.com/channels/553741558869131266/1384589692355477696

  • MainNet Announcement Channel: https://discord.com/channels/553741558869131266/1384589604153331732

3. BEFORE the Day of the Upgrade

We'll use v0.1.29 as an example for this section.

1

Choose a height

  1. Visit the MainNet Grafana Dashboard to get the current height of the blockchain:

    • https://grafana.poktroll.com/goto/8MB3RPRDg?orgId=1

  2. Review the latest block times of the network by checking network stats, Grove's infra, or config.toml:

    • Grove infra: https://github.com/buildwithgrove/infrastructure/blob/dfbc02c57bbc5e61ae860393ec35d45b6a6fc3d5/environments/protocol/vultr-sgp/kubernetes-manifests/mainnet/config-files.yaml#L505

    • config.toml: https://github.com/pokt-network/pocket-network-genesis/blob/master/shannon/mainnet/config.toml

    • Typical block time: usually ~30s per block.

  3. Account for session tokenomics overhead (can add ~1–10s depending on network traffic).

  4. Determine a future height that gives the ecosystem a few days to prepare.

  5. For your particular upgrade (e.g. v0.1.29), update the height in:

    • tools/scripts/upgrades/upgrade_tx_v0.1.29_main.json

Determining future block height — example prompt you can use with ChatGPT:

2

Submit the Upgrade on MainNet

Run:

Look for "Submit the upgrade transaction". You should end up running a command similar to:

Verify it is on-chain:

3

Broadcast Telegram Announcement

  1. Install the GitHub CLI: https://cli.github.com/

  2. Prepare the announcement (example for v0.1.29):

  1. Run a test broadcast:

  1. If it looks good, broadcast to all exchanges:

4. ON the Day of the Upgrade

1

Prepare another snapshot

See Protocol Upgrade Preparation for snapshot instructions:

  • https://dev.poktroll.com/develop/upgrades/upgrade_preparation

Existing snapshots:

  • https://snapshots.us-nj.poktroll.com/

2

Monitor the Upgrade

Run:

Use recommended dashboards and commands to monitor the upgrade progress.

3

Create a post-upgrade announcement

See Protocol Upgrade Preparation for instructions to create a post-upgrade snapshot:

  • https://dev.poktroll.com/develop/upgrades/upgrade_preparation

4

Update the GitHub Release Notes

Generate a table of the upgrade heights and tx hashes:

Insert the generated table above the auto-generated release notes:

  • https://github.com/pokt-network/poktroll/releases

Mark the release as "latest release".

5

Update the Documentation Upgrade List

Update the Upgrade List Documentation with the new upgrade:

  • https://dev.poktroll.com/develop/upgrades/upgrade_list

Use the release notes to populate the upgrade list:

  • https://github.com/pokt-network/poktroll/releases/latest

6

Send out an announcement to all exchanges

Prepare release_prep_announcement.txt:

Test broadcast:

If it looks good, broadcast to all exchanges:

5. Update the pocketd binary

Once the upgrade is validated, update the Homebrew tap so users can install the new CLI.

Run:

Note: Make sure to update the versions in the commit message accordingly.

Reinstall the CLI:

OR:

Alternatively (first-time install):

OR:

6. How to Cancel an Upgrade

In emergency situations, you may need to cancel a pending upgrade.

Run the cancellation command:

Verify Upgrade Status

Check the current upgrade plan status (whether pending or cancelled):

Make sure to inform exchanges of the cancellation. Example announcement:

Test broadcast:

If it looks good, broadcast:

Last updated

Was this helpful?