Upgrade guide for Akash Network Mainnet 19 upgrade to v2.2.0.
This guide provides step-by-step instructions for upgrading your node to Akash v2.2.0 using both Cosmovisor (recommended) and manual upgrade methods.
Governance proposal: Proposal #347
Upgrade Details
Upgrade Information:
- Upgrade Name: v2.2.0
- Binary Version:
v2.2.0 - Block Height: 29,399,482
- Estimated Time: November 6th, 2026 at ~14:00 UTC
- Upgrade Info File: info.json
- Binary Links: GitHub Releases
Note: Block times have high variance. Monitor the countdown on Mintscan for more precise timing, and prepare your node to halt at the upgrade height.
Upgrade Features
This upgrade is the first implementation step after Proposal #346: Migrate the Akash Protocol to Solana passed. It installs the Akash side of the portal with transfers turned off; a later parameter proposal opens them at the token launch.
By voting YES on Proposal #347, the network approves the following changes:
1. AKT on Solana: x/sink Module
Introduces the implementation of AEP-95: One-Way AKT Sink to Solana as the new x/sink module.
This upgrade only initializes the module and its store; the module is installed disabled. It will be configured and enabled through a separate parameter change proposal.
During the upgrade, any balance already held by the sink module address is moved to the community pool before the module is initialized.
2. Pyth VAA Verifier Contract Update
Akash imports the AKT/USD price for BME through Pyth. The price contract reads prices through a dedicated pyth-vaa verifier contract that checks Pyth router signatures instead of Wormhole guardian signatures.
This upgrade migrates that verifier, akash1zwv6feuzhy6a9wekh96cd57lsarmqlwxdypdsplw6zhfncqw6ftqucuysk, to its current code through MsgStoreAndMigrateContract with governance as the authority. The new code adds:
- Guarded router set rotation — A new router set is accepted only through a VAA signed by the current router set, and only at the next sequential index. Router sets cannot be changed through ordinary config updates.
- Verification within wasm limits — VAA signature verification stays within the wasm function limits that the chain enforces on every contract.
The contract admin stays the governance module. The price contract address, the price feed ID, and the oracle parameters do not change.
3. Escrow Payment Repair
Closes open escrow payments whose leases have already closed.
The repair changes only the payment state and its index. Balances, debt, prior withdrawals, account settlement heights, and bank balances are left untouched. The upgrade emits an escrow_orphan_payments_repaired event reporting the number of payments closed.
Validator Expectations
To ensure a network upgrade with minimal downtime, Akash Validators should be available as follows:
Timeline:
- One hour prior to upgrade - Available and monitoring the Akash Discord server’s
#validatorsand#validator-announcementschannels for any late-breaking guidance - During upgrade window – Available throughout the expected downtime
- At the upgrade height – Ensure the v2.2.0 binary is in place (or install it and restart if upgrading manually)
- One hour post upgrade - Available and monitoring Discord channels for any possible revised strategies or updates deemed necessary
Emergency Coordination
In the event of issues during the upgrade, coordinate via the #validators channel in Discord to reach emergency consensus and mitigate problems quickly.
Discord: discord.akash.network
Hardware Requirements
Recommended specifications for running a node for this upgrade:
This upgrade adds the x/sink store, migrates one CosmWasm contract, and iterates open escrow payments. No existing module state is rewritten. It is recommended that all validators meet the following:
- OS: Ubuntu 24.04
- RAM: At least 32 GB with swap enabled
- CPU: 8+ cores minimum
- Storage: Sufficient space for blockchain data (1 TB+ recommended)
As with any upgrade that adds a store, validators are strongly encouraged to snapshot their node prior to the upgrade height.
Upgrade Process
Two upgrade methods are available:
- Cosmovisor (Recommended) - Automatic upgrade
- Manual - Manual binary replacement
Choose the method that best suits your setup. Full upgrade details and coordination can be found via the Akash Discord #validators channel.
Option 1: Upgrade Using Cosmovisor (Recommended)
The following instructions assume the akash and cosmovisor binaries are already installed and Cosmovisor is set up as a systemd service.
Note: Cosmovisor v1.5.0 or higher is required.
Validators and RPCs supervised by Cosmovisor with DAEMON_ALLOW_DOWNLOAD_BINARIES=true will automatically download upgrade binaries from the upgrade info file.
Step 1: Configure Cosmovisor
Note: Skip this step if Cosmovisor v1.5.0+ is already installed and configured.
Install Cosmovisor:
Verify installation:
DAEMON_NAME=akash DAEMON_HOME=~/.akash cosmovisor versionStep 2: Configure Systemd Service
Update your Cosmovisor systemd service file with the following recommended settings:
Create/edit /etc/systemd/system/akash.service:
[Unit]Description=Akash with cosmovisorRequires=network-online.targetAfter=network-online.target
[Service]User=rootGroup=rootExecStart=/root/go/bin/cosmovisor run start
Restart=alwaysRestartSec=10LimitNOFILE=4096
Environment="DAEMON_NAME=akash"Environment="DAEMON_HOME=/root/.akash"Environment="DAEMON_RESTART_AFTER_UPGRADE=true"Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"Environment="DAEMON_LOG_BUFFER_SIZE=512"Environment="UNSAFE_SKIP_BACKUP=true"Environment="DAEMON_SHUTDOWN_GRACE=15s"
[Install]WantedBy=multi-user.targetImportant Environment Variables:
DAEMON_ALLOW_DOWNLOAD_BINARIES=false– It’s recommended to manually place the binary (set totruefor auto-download from the upgrade info file)UNSAFE_SKIP_BACKUP=true- Set tofalseif you want automatic backup before upgradeDAEMON_SHUTDOWN_GRACE=15s- Grace period for cleanup before shutdown
Note: It’s preferable to run the service under a dedicated non-system user other than root.
Reload and restart:
sudo systemctl daemon-reloadsudo systemctl restart akashsudo systemctl enable akashCheck status:
sudo systemctl status akashStep 3: Download Precompiled Binary (Recommended)
Note: Skip this step if you have enabled
DAEMON_ALLOW_DOWNLOAD_BINARIES=truein your Cosmovisor configuration.
This upgrade uses an info.json file that references the correct release with pre-built binaries. Download the Akash v2.2.0 binary for your platform from the GitHub releases page.
Select your platform:
- Linux AMD64 –
akash_2.2.0_linux_amd64.zip - Linux ARM64 –
akash_2.2.0_linux_arm64.zip - macOS (Intel and Apple Silicon) –
akash_2.2.0_darwin_all.zip
.deb and .rpm packages are also available on the release page.
Verify the checksum against the release’s akash_2.2.0_checksums.txt:
wget https://github.com/akash-network/node/releases/download/v2.2.0/akash_2.2.0_linux_amd64.zipwget https://github.com/akash-network/node/releases/download/v2.2.0/akash_2.2.0_checksums.txtsha256sum --ignore-missing -c akash_2.2.0_checksums.txtIf you need to build from source instead, see Build Binary From Source.
Step 4: Prepare Upgrade Binary
Create the folder for the upgrade and copy the binary:
# Create the upgrade directorymkdir -p $HOME/.akash/cosmovisor/upgrades/v2.2.0/bin
# Copy the downloaded binary (adjust path to your download location)cp /path/to/downloaded/akash $HOME/.akash/cosmovisor/upgrades/v2.2.0/bin/akash
# Make it executablechmod +x $HOME/.akash/cosmovisor/upgrades/v2.2.0/bin/akash
# Verify the version$HOME/.akash/cosmovisor/upgrades/v2.2.0/bin/akash versionExpected output: v2.2.0
Step 5: Wait for Upgrade
At the proposed block height (29,399,482), Cosmovisor will automatically:
- Stop the current binary
- Set the upgrade binary as the new current binary (v2.2.0)
- Restart the node
Monitor the upgrade:
# Watch logssudo journalctl -u akash -f
# Check sync status after upgradeakash status | jq '.sync_info.catching_up'Option 2: Manual Upgrade Without Cosmovisor
Using Cosmovisor to perform the upgrade is not mandatory. Node operators can manually update the akash binary at the time of the upgrade.
Warning: Do NOT replace the binary before the upgrade height, as this will stop your node.
Manual Upgrade Steps
1. Wait for the chain to halt at block height 29,399,482
2. Stop your node (if not already stopped):
sudo systemctl stop akash3. Install the v2.2.0 binary:
Either download the precompiled binary from GitHub releases or build from source (see Build Binary From Source).
4. Verify the binary version:
akash version# Should output: v2.2.05. Restart your node:
sudo systemctl start akash6. Monitor sync status:
akash status | jq '.sync_info.catching_up'Expected: false when fully synced
Build Binary From Source
Note: We highly recommend downloading a precompiled Akash binary over building from source. Only use this method if precompiled binaries are not available for your platform or if you have specific requirements.
Prerequisites
Ensure the following dependencies are installed before building:
| Dependency | Minimum Version | Notes |
|---|---|---|
| golang | >= 1.26 | Required for compiling Go code |
| direnv | latest | Environment management - direnv.net |
| docker | latest | Required for containerized builds |
| make | latest | Build automation |
| git | latest | Version control |
| jq | latest | JSON processing |
| unzip | latest | Archive extraction |
| wget | latest | File downloads |
| curl | latest | HTTP requests |
| npm | latest | JavaScript package management |
| readlink | latest | Path resolution |
| lz4 | latest | Compression |
Direnv Setup
If using direnv for the first time, you should see the following message after entering the source directory:
direnv: error .envrc is blocked. Run `direnv allow` to approve its contentIf you don’t see this message, direnv is likely not hooked to your shell. Visit direnv.net for installation and shell integration instructions.
Build Steps
# Clone the repositorygit clone https://github.com/akash-network/node.git
# Navigate to the directorycd node
# Checkout the release taggit checkout v2.2.0
# Allow direnv to set up the environmentdirenv allow
# Build the release binarymake releaseBuild Output
After the build completes successfully, binaries will be located in .cache/goreleaser/main.
The directory structure will look like:
.cache/goreleaser/main/├── darwin_amd64_v1/│ └── akash├── darwin_arm64/│ └── akash├── linux_amd64_v1/│ └── akash├── linux_arm64/│ └── akash└── ... (other platforms)Verify the Build
.cache/goreleaser/main/<YOUR_OS_ARCH>/akash version# Should output: v2.2.0Using the Built Binary
For Cosmovisor:
mkdir -p $HOME/.akash/cosmovisor/upgrades/v2.2.0/bincp .cache/goreleaser/main/<YOUR_OS_ARCH>/akash $HOME/.akash/cosmovisor/upgrades/v2.2.0/bin/akashchmod +x $HOME/.akash/cosmovisor/upgrades/v2.2.0/bin/akashFor manual upgrade:
Copy the binary to your system path or use it directly when the upgrade height is reached.
Verification After Upgrade
Check Node Status
akash status | jq '.sync_info'Important fields:
catching_up: false- Node is syncedlatest_block_height– Current block (should be > 29,399,482)
Check Binary Version
akash versionExpected output: v2.2.0
Check Validator Status
akash query staking validator <your-validator-address>Verify:
jailed: falsestatus: BOND_STATUS_BONDED(if in active set)
Troubleshooting
Node Not Starting After Upgrade
Check logs:
sudo journalctl -u akash -n 100 --no-pagerCommon issues:
- Binary not executable:
chmod +x /path/to/akash - Wrong binary version: Verify with
akash version - Permission issues: Check user/group settings in systemd service
Node Out of Sync
Check peer connections:
akash status | jq '.node_info.other.peers'If low peer count, add peers from:
Cosmovisor Not Upgrading
Verify upgrade binary exists:
ls -la $HOME/.akash/cosmovisor/upgrades/v2.2.0/bin/akashCheck Cosmovisor logs:
sudo journalctl -u akash -fCommon issues:
- Upgrade binary not in correct location (
$HOME/.akash/cosmovisor/upgrades/v2.2.0/bin/akash) - Binary not executable
DAEMON_ALLOW_DOWNLOAD_BINARIESset incorrectly
Additional Resources
- Governance Proposal: Proposal #347 on Mintscan
- Related Proposal: Proposal #346: Migrate the Akash Protocol to Solana
- Specification: AEP-95: One-Way AKT Sink to Solana
- Release: akash-network/node v2.2.0
- Upgrade Info File: v2.2.0 info.json
- GitHub: akash-network/node
- Block Explorer: Mintscan | ATOMScan | Arcturian
- Discord: #validators channel
- Network Info: akash-network/net
Need Help?
- Discord: #validators channel
- GitHub Issues: akash-network/node/issues