Axelar follows the Cosmos SDK’s governance-gated upgrade pattern: a software upgrade proposal is submitted, voted on by AXL token holders, and — if it passes — executed automatically at the specified block height. All validators must replace their binary before the upgrade height to avoid being halted. This page covers the full upgrade lifecycle from proposal to post-upgrade verification, including genesis migration and rollback procedures.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/axelarnetwork/axelar-core/llms.txt
Use this file to discover all available pages before exploring further.
Upgrade Process Overview
Prepare the Release
The Axelar team publishes a new release tag, signed binaries, and Docker images. Release notes indicate whether the upgrade is consensus-breaking and the recommended upgrade height.
Submit the Upgrade Proposal
Any AXL holder submits a governance proposal containing a
MsgSoftwareUpgrade targeting the new binary version and an agreed block height.Deposit & Vote
The community adds deposits and votes. On mainnet, at least 1 week of notice is required for consensus-breaking upgrades; on testnet, at least 2 business days.
Replace the Binary
Validators download and verify the new
axelard binary and place it where Cosmovisor or their process manager can find it before the upgrade height.Upgrade Executes
At the upgrade height the node halts, runs all registered migration handlers, and restarts with the new binary. The network resumes producing blocks once 2/3+ of voting power is online with the new binary.
Submitting an Upgrade Proposal
Useaxelard tx upgrade software-upgrade to submit a proposal via the governance module:
| Flag | Description |
|---|---|
[name] | Must match the upgrade name registered in upgrades.go (e.g. v1.3) |
--upgrade-height | Block height at which the upgrade executes |
--upgrade-info | JSON with binary download URLs, compatible with Cosmovisor |
--deposit | Initial deposit toward the governance minimum |
--title / --summary | Human-readable proposal metadata |
Upgrade Info JSON (Cosmovisor Format)
Canceling an Upgrade
If a scheduled upgrade must be aborted before the upgrade height is reached, submit a cancel proposal:Querying the Upgrade Plan
To check whether an upgrade is currently scheduled:What Happens at Upgrade Height
When the node reaches the scheduled upgrade height:- The node halts and writes an
upgrade-info.jsonfile to disk. - Cosmovisor (or the operator manually) replaces the
axelardbinary. - On restart,
app.setUpgradeBehaviouris called and runs the registered upgrade handler for the current version. - The handler executes state migrations — for example, in v1.3.0 this included migrating Tendermint consensus parameters from
x/paramsto the newx/consensusmodule and adding thecrisisandconsensusstore keys. mm.RunMigrationsruns all module migration scripts to update module consensus versions.- The node resumes producing blocks.
v1.3.0 upgrade handler details
v1.3.0 upgrade handler details
The v1.3.0 upgrade (
upgrades.go) performs:- Consensus params migration: Moves Tendermint consensus parameters from the legacy
x/paramssubspace (baseapp.Paramspace) to the dedicatedx/consensusmodule keeper (baseapp.MigrateParams). - New store keys: Adds
crisisandconsensustoStoreUpgrades.Added. - Module migrations: All modules (auth, bank, staking, mint, distribution, slashing, gov, crisis, ibc, ibctransfer, wasm, and all Axelar modules) run their respective migration scripts via
mm.RunMigrations. - Key table setup: Legacy param subspaces for all SDK and IBC modules are populated with key tables to allow the migration to read their values from state.
Recent Major Upgrades
v1.3.0 — SDK v0.50
Upgraded to Cosmos SDK v0.50, IBC v8, and CosmWasm v0.54. Introduced
MsgUpdateParams for all modules. Renamed tendermint commands to comet. Default broadcast mode changed from block to sync.v1.2.0 — Custom Fee Burn
Introduced custom fee allocation that retains the community pool portion and burns the remainder, replacing the default full-distribution behavior.
v1.1.0 — IBC Transfer Refactor
Moved coin locking to the nexus module for improved IBC transfer handling and refund flows. Added CosmWasm contract access to chain registration queries.
v1.1.2 — Security Fix
Fixed decimal range validation (ASA-2024-010). Back-ported to v1.0.5.
Genesis Migration
To migrate agenesis.json file from a previous chain version to a target version:
Genesis migration is only needed when restarting a chain from an exported state file at a different software version. Running validators in live network upgrades do not run this command — the upgrade handler processes state automatically.
Rolling Back a Failed Upgrade
If a node fails after upgrading due to an incorrect application state transition, userollback to revert by one height:
| Flag | Effect |
|---|---|
| (none) | Roll back app state and CometBFT state to n - 1; block n remains and will be re-executed on restart |
--hard | Also removes the last block from the block store |
Versioning and Release Types
Axelar follows semantic versioning:| Release Type | Cadence | Notes |
|---|---|---|
Major (vX.0.0) | Breaking changes | Requires coordinated network upgrade via governance |
Minor (vX.Y.0) | New features | Typically consensus-breaking; requires governance upgrade |
Patch (vX.Y.Z) | Bug fixes | Non-consensus-breaking; operators update independently |
main branch. The release workflow creates a releases/<major>.<minor>.x branch automatically. Patch releases cherry-pick changes into the corresponding release branch.