Cross-chain / Bridge·EVM · Cosmos · Solana · Sui · Multi-chain
Axelar
Proof-of-stake validator network for cross-chain General Message Passing (GMP) and the Interchain Token Service (ITS). Connects 70+ EVM, Cosmos, Sui, Stellar, and Solana chains with arbitrary contract calls and unified token transfers.
- 01cross-chain contract calls (GMP)
- 02deploying canonical multichain ERC20s (ITS)
- 03Cosmos <-> EVM messaging
- 04validator-secured (PoS) bridge security model
- 05unified token transfers without bespoke bridges
- pnpm add @axelar-network/axelarjs-sdk @axelar-network/axelar-gmp-sdk-solidity
- pnpm add @axelar-network/interchain-token-service
| Variable | Scope | Description |
|---|---|---|
| AXELAR_ENVIRONMENT | Client | `mainnet` or `testnet` — selects the AxelarQueryAPI / AxelarAssetTransfer endpoints and gateway addresses. |
For GMP, inherit `AxelarExecutable` from `@axelar-network/axelar-gmp-sdk-solidity`, call `gateway.callContract(destinationChain, destinationAddress, payload)` after paying `gasService.payNativeGasForContractCall{value: gasFee}(...)` (quote `gasFee` via AxelarJS SDK `AxelarQueryAPI.estimateGasFee`). Implement `_execute(commandId, sourceChain, sourceAddress, payload)` on the destination contract — Axelar validators relay automatically. For canonical token deployments use ITS: call `InterchainTokenFactory.deployInterchainToken` to register on the home chain, then `deployRemoteInterchainToken(destChain)` for each spoke. Use AxelarJS `AxelarGMPRecoveryAPI.queryTransactionStatus(txHash)` to poll status and `manualRelayToDestChain` if a tx gets stuck. Chain identifiers are STRINGS (e.g. `'Ethereum'`, `'Polygon'`, `'osmosis'`), not chain IDs.
- ⚑Axelar identifies chains by STRING name (case-sensitive: `'Ethereum'`, `'Avalanche'`, `'osmosis'`). Mixing case or using EVM chain IDs is the #1 integration bug.
- ⚑Always pre-pay gas via `AxelarGasService.payNativeGasForContractCall` BEFORE `gateway.callContract` (or atomically in the same tx). Skipping it leaves the message stuck pending manual relay.
- ⚑AxelarJS SDK is pinned to ethers v5 — interop with viem or ethers v6 requires manual contract calls or a wrapper.
- ⚑Gas estimates from `estimateGasFee` are conservative but can still under-pay during congestion; either over-pay 20% or implement a top-up via `addNativeGas`.
- ⚑ITS token deployments are NOT atomic across chains — register on the home chain first, then deploy to each spoke; failures need manual recovery via the ITS portal.
- ⚑Validator quorum delays add ~30s–2min finality on top of source-chain confirmations; never block UI on completion, surface the destination tx hash when relayed.
- ⚑Cosmos / Sui / Solana spokes have their own SDKs and call patterns — the EVM `AxelarExecutable` interface does not translate.