The Permission module is Axelar’s access-control layer for privileged operations that should not be executable by ordinary accounts. It stores a governance key — a Cosmos SDK k-of-n multisig public key — whose signatures authorize sensitive transactions like chain registration, token deployment, and key rotation. It also maintains a list of controller accounts that can send certain privileged transactions without needing the full governance multisig. Together these two mechanisms give the Axelar core team and community a graduated trust model for network management.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.
Governance Key
A k-of-n multisig key stored on-chain. Transactions that require governance authorization must be signed by at least k of the n registered public keys.
Controller Accounts
Individual accounts granted the
ROLE_CHAIN_MANAGEMENT role, allowing them to submit chain and asset management transactions.Key Rotation
The governance key itself can be updated through
update-governance-key, enabling key rotation without a full chain upgrade.Role Validation
Every permission-gated message is validated against the module’s account registry before execution proceeds.
Key Concepts
GovernanceKey
The governance key is aLegacyAminoPubKey (Cosmos SDK k-of-n multisig) stored in the Permission module’s state:
k must be at least 1 and must not exceed the number of supplied public keys n. Every message that checks for governance authorization verifies that the transaction was signed by at least k of the registered keys.
GovAccount
AGovAccount pairs a Cosmos address with an assigned Role:
ROLE_CHAIN_MANAGEMENT, which grants permission to register chains and assets without requiring the full governance multisig signature, and ROLE_ACCESS_CONTROL, which is held by the governance key address itself and is required to register or deregister controllers.
Controller vs Governance Key
- Controller Accounts
- Governance Key
- Individual Bech32 addresses registered by the governance key holder.
- Assigned the
ROLE_CHAIN_MANAGEMENTrole. - Can submit privileged transactions unilaterally (single signature).
- Suited for operational tasks like registering new Cosmos chains or assets.
Registering a Controller
The governance key must sign theregister-controller transaction. Once registered, the controller can act on behalf of governance for chain management:
Deregistering a Controller
Remove a controller account when it is no longer needed or if the key is compromised:Updating the Governance Key
Replace the current governance key with a new k-of-n multisig. The existing key must sign this transaction:The
UpdateGovernanceKeyRequest validates that threshold > 0 and len(pubKeys) >= threshold. Key rotation takes effect immediately — ensure the new key holders are ready to sign before submitting.