The EVM module connects Axelar to every supported Ethereum-compatible chain. It manages the on-chain Axelar Gateway contract for each EVM network, assembles and signs batches of commands (token deployments, mints, burns, and operatorship transfers), and orchestrates the end-to-end confirmation flow for EVM events. Validators observe external chain events and vote on them through this module before commands are signed and sent back to the gateway.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.
Gateway Management
Registers and tracks the AxelarGateway contract address per EVM chain and builds ABI-encoded command batches for execution.
Command Batching
Aggregates pending gateway commands — deployToken, mintToken, burnToken, transferOperatorship — into signed
CommandBatch objects.Event Confirmation
Validators submit confirmation transactions for EVM gateway events; votes are tallied before commands are queued.
ERC20 Token Lifecycle
Supports creating, confirming, and managing ERC20 tokens on EVM chains with versioned burner code hashes.
Key Concepts
AxelarGateway Contract
TheAxelarGateway is the on-chain contract deployed to each EVM chain. It receives signed command batches and executes them. Axelar validators produce a signed CommandBatch that is submitted to the gateway’s execute(bytes input) function.
CommandBatch
ACommandBatch is the unit of work signed by the multisig module and submitted to the gateway. It may contain multiple commands in a single ABI-encoded payload, reducing the number of on-chain transactions needed.
Command Types
| Command | Description |
|---|---|
deployToken | Deploys a new ERC20 token contract on the destination chain |
mintToken | Mints tokens to a recipient address on the destination chain |
burnToken | Burns tokens from a deposit address (bridging back to source) |
transferOperatorship | Rotates the operator key on the gateway contract |
BurnerInfo & ERC20Deposit
Burner contracts hold deposited funds until they are confirmed and bridged. Axelar tracks multiple burner versions by their code hash:EVM Chain Lifecycle
Add Chain
Register a new EVM chain with its chain ID, confirmation height, and network name via
axelard tx evm add-chain.Set Gateway
Once the AxelarGateway contract is deployed on the target network, record its address:
axelard tx evm set-gateway [chain] [address].Confirm Transactions
Validators submit
confirm-gateway-txs to trigger voting on observed EVM events. Polls are created per event.Sign Commands
After events are confirmed,
sign-commands bundles pending commands into a CommandBatch and starts a multisig signing session.Event Confirmation Flow
sign-commands is submitted, a multisig signing session is created (see the Multisig module). Validators submit their individual signatures, and the threshold-aggregated batch can then be queried and sent to the gateway.
If an EVM event fails to reach quorum, it can be retried with
axelard tx evm retry-event [chain] [event-id]. Use this only after investigating why the event did not confirm.Token Deployment
Deploy a new ERC20 token on an EVM chain that maps to a registered asset:Module Parameters
EVM Parameters (per-chain)
EVM Parameters (per-chain)
The Axelar chain name this parameter set applies to (e.g.,
ethereum).Minimum block confirmations required before an EVM event is eligible for voting. Default:
1.The EVM network label (e.g.,
mainnet, ganache). Used to select the correct chain ID from the Networks list.Fraction of voting power required for an EVM poll to reach quorum. Default:
51/100.Number of blocks after a poll expires during which late votes are still accepted. Default:
2 blocks.Number of blocks during which validators cannot change a submitted vote. Default:
75 blocks.Minimum number of voters required for a poll to be valid. Default:
1.Gas limit applied when estimating execution of a command batch on the EVM chain. Default:
5000000.Maximum commands processed per block in the end blocker. Default:
50.Maximum pending transfers processed per block. Default:
50.