IntroductionCosmos GMPSolidity UtilitiesSandbox
InterchainTokenServiceInterchainTokenFactoryTokenManagerAxelarGateway AxelarGasServiceAxelarExecutableAxelarJS SDK
Bug Bounty
Crosschain Message FlowaxlUSDCSecurity OverviewInterchain Transaction DurationEVM Contract Governance

Integrate a chain with the Interchain Amplifier

đź’ˇ

The Axelar Virtual Machine (AVM) and Amplifier are currently under active development, so these instructions are likely to change. Please check back frequently for updates.

Integration Architecture

To connect your chain to the Axelar network via the Interchain Amplifier, you’ll need to build or instantiate 4 smart contracts and 1 relayer service.

  • Source Chain Gateway Contract
    • Built using the tech stack of your chain, you’ll need to deploy a smart contract implementing the Cross-Chain Gateway Protocol.
    • For EVM chains, you can re-use the existing EVM Gateway.
    • This contract serves as the primary API for developers sending messages from your chain.
  • Verifier Contract
    • A smart contract on the Axelar network that verifies the validity of transactions on your chain.
    • Most integrators will begin by using or customizing a Voting Verifier or can be customized to your needs for cases such as verification via ZK Proof.
    • If you deploy a Voting Verifier, verifiers will need to support your chain and vote on the truth of source chain transactions.
  • Gateway Contract
    • A gateway contract that exists on the Axelar network that will knows how to use your verifier contract to check the validity of a transaction and then knows how to forward transactions onto the Amplifier router.
    • Most integrators will begin by using or customizing this Gateway Contract.
  • Prover Contract
    • A smart contract on the Axelar network that knows how to prove the validity of a transaction on your chain.
    • Most integrators will begin by usign or customzing the multisig prover
  • Message Relayer
    • A service built with any tech stack that listens for events on your chain and relays them to the Axelar network.
    • Get started with our Message Relayer Example

The tutorial below will guide you through this process within the current Amplifier devnet. Contract deployment on testnet or mainnet will require governance proposal.

Integration Process

Most integrators will follow the following process:

  1. Learn & understand Amplifier
    • Follow the tutorial below to deploy standardize contracts to the devnet to understand the tools and basics of the process.
  2. Customize and deploy to devnet
    • Build (or instantiate or customize) each of the required contracts and the relayer.
    • You may choose to change the logic of your verifier contract (for ZK use cases for example) or prover contract.
  3. Whitelist contracts
  4. Become a verifier for your chain.
    • To test your chain, you will need active verifiers to vote on messages from your chain
  5. Test your integration
    • Make sure you can send and receive messages on your chain.
  6. Begin audit process
    • You should audit your on-chain contracts.
  7. Propose to testnet
    • Make on-chain proposals on the testnet to create your CosmWasm smart contracts.
      1. Proposal to store your CosmWasm code.
      2. Proposal to instantiate your contracts.
    • Make an on-chain proposal to add your chain to the Amplifier router.
  8. Test in testnet
    • Ensure your contracts are working as expected.
    • Verify with developers that they can send messages to and from your chain.
  9. Productionize your relayer
    • Ensure your relayer is robust, fault-tolerant, and can handle the load of your chain.
  10. Propose to mainnet
    • Make on-chain proposals on mainnet to create your CosmWasm smart contracts.
      1. Proposal to store your CosmWasm code.
      2. Proposal to instantiate your contracts.
    • Make an on-chain proposal to add your chain to the Amplifier router.

Integration Tutorial

Prerequisites

  • You should know how to deploy and interact with a CosmWasm contract. Refer to the Osmosis CosmWasm testnet deployment tutorial if you’d like a refresher — just replace osmosisid with axelard and use the amd64 version if building on Linux and arm64 version of the contract optimizer if you are working on a Mac with Apple silicon.
  • Run --gas auto --gas-adjustment 1.5 to provide your transactions with sufficient gas.

Devnet information

  • Devnet RPC: http://devnet-amplifier.axelar.dev:26657
  • Devnet LCD (REST API/JSON RPC): http://devnet-amplifier.axelar.dev:1317
  • Devnet gRPC: devnet-amplifier.axelar.dev:9090
  • Chain ID: devnet-amplifier

Other info can be found in devnet-amplifier.json.

Get the axelard binary

Install the v0.35.5 axelard binary. You can either download the pre-built version or build it yourself from axelar-core.

Option 1: Download the pre-built binary

  1. Download the pre-built axelard binary along with the latest version of the WasmVM.

  2. Add the parent folder to LD_LIBRARY_PATH:

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/[your-path]
    ln -s axelard-darwin-arm64-v0.35.5 axelard
    chmod a+x axelard-darwin-arm64-v0.35.5 
    sudo mkdir /usr/local/lib
    

    If you run into a Mac warning telling you that either the axelard binary or the WasmVM cannot be verified, you can disable it by running:

    xattr -d com.apple.quarantine [filename]
    

Option 2: Build the binary yourself

  1. Clone the axelar-core repo.

  2. Checkout the v0.35.5 release tag.

  3. Run make build.

  4. Generate an account by running:

    axelard keys add wallet --keyring-backend test
    
  5. Fund your devnet account with uamplifier tokens:

    • Join the Axelar Discord.
    • Get the Developer Role.
    • Go to the #faucet channel and submit a request with your account to get 100 test tokens:
    !faucet devnet-amplifier [your axelar wallet address]
    
  6. Query your account balance by running:

    axelard q bank balances [your axelar wallet] —-node [RPC]
    

Onboard a chain to Amplifier

Once you are running ampd and tofnd, you can onboard a chain to the Amplifier using the gateway, voting verifier, and multisig prover contracts. This requires approval by the Interop Labs team.

You can either use the existing deployed contracts and their code ids, or build and deploy from the axelar-examples repo.

Option 1: Use existing deployed contracts

Use the existing deployments for all three contracts, making note of the existing deployment’s code id:

Option 2: Build and deploy the contracts yourself

  1. Clone the axelar-amplifier repo.

    git clone https://github.com/axelarnetwork/axelar-amplifier
    cd axelar-amplifier
    
  2. Build the deployed gateway, voting verifier, and multisig prover contracts from devnet-amplifier.json using the Cosmwasm rust-optimizer. From the root of the repo, run:

    docker run --rm -v "$(pwd)":/code \
    --mount type=volume,source="$(basename "$(pwd)")_cache",target=/target \
    --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry \
    cosmwasm/optimizer:0.15.1
    
  3. Deploy the verifier:

    axelard tx wasm store artifacts/voting_verifier.wasm --node http://devnet-amplifier.axelar.dev:26657 --from wallet --chain-id devnet-amplifier --gas auto --gas-adjustment 1.5 --keyring-backend test
    

    Note the code id in the output:

    {"height":"128706","txhash":"6D9D90DC86A4FC7B1EAE23062997C50ACE988B0091C4BD2B0C785A9F8D133A68","codespace":"","code":0,"data":"0A460A1E2F636F736D7761736D2E7761736D2E76312E4D736753746F7265436F646512240809122073A8B7CF0BE0CAC97C87E2079CFBBD14F3B373ECFA981BF6322A349EEFBEA227","raw_log":"[{\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgStoreCode\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"axelar1ypt7vtlj4c67ezex8nwc0vm0acf6d6evss2dau\"}]},{\"type\":\"store_code\",\"attributes\":[{\"key\":\"code_checksum\",\"value\":\"73a8b7cf0be0cac97c87e2079cfbbd14f3b373ecfa981bf6322a349eefbea227\"},{\"key\":\"code_id\",\"value\":\"9\"}]}]}]","logs":[{"msg_index":0,"log":"","events":[{"type":"message","attributes":[{"key":"action","value":"/cosmwasm.wasm.v1.MsgStoreCode"},{"key":"module","value":"wasm"},{"key":"sender","value":"axelar1ypt7vtlj4c67ezex8nwc0vm0acf6d6evss2dau"}]},{"type":"store_code","attributes":[{"key":"code_checksum","value":"73a8b7cf0be0cac97c87e2079cfbbd14f3b373ecfa981bf6322a349eefbea227"},{"key":"code_id","value":"9"}]}]}],"info":"","gas_wanted":"6153520","gas_used":"3091569","tx":null,"timestamp":"","events":[{"type":"coin_spent","attributes":[{"key":"c3BlbmRlcg==","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true},{"key":"YW1vdW50","value":"NDMwNzV1YW1wbGlmaWVy","index":true}]},{"type":"coin_received","attributes":[{"key":"cmVjZWl2ZXI=","value":"YXhlbGFyMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsNWg0Z3F1","index":true},{"key":"YW1vdW50","value":"NDMwNzV1YW1wbGlmaWVy","index":true}]},{"type":"transfer","attributes":[{"key":"cmVjaXBpZW50","value":"YXhlbGFyMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsNWg0Z3F1","index":true},{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true},{"key":"YW1vdW50","value":"NDMwNzV1YW1wbGlmaWVy","index":true}]},{"type":"message","attributes":[{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"tx","attributes":[{"key":"ZmVl","value":"NDMwNzV1YW1wbGlmaWVy","index":true},{"key":"ZmVlX3BheWVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"tx","attributes":[{"key":"YWNjX3NlcQ==","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1LzQ=","index":true}]},{"type":"tx","attributes":[{"key":"c2lnbmF0dXJl","value":"RGNGMGJpbUlhUTBnR0d4RHR0TC9iT2hEcHVUWm5iak95dnR4RlUzODBIaGMzTGNBbUhNb0pNZ1hpZDFsbVBOQ0pEd0tWWEpjM290Y094M0d4ZU8xbGc9PQ==","index":true}]},{"type":"message","attributes":[{"key":"YWN0aW9u","value":"L2Nvc213YXNtLndhc20udjEuTXNnU3RvcmVDb2Rl","index":true}]},{"type":"message","attributes":[{"key":"bW9kdWxl","value":"d2FzbQ==","index":true},{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"store_code","attributes":[{"key":"Y29kZV9jaGVja3N1bQ==","value":"NzNhOGI3Y2YwYmUwY2FjOTdjODdlMjA3OWNmYmJkMTRmM2IzNzNlY2ZhOTgxYmY2MzIyYTM0OWVlZmJlYTIyNw==","index":true},{"key":"Y29kZV9pZA==","value":"OQ==","index":true}]}]}
    
  4. Deploy the gateway:

    axelard tx wasm store artifacts/gateway.wasm --node http://devnet-amplifier.axelar.dev:26657 --from wallet --chain-id devnet-amplifier --gas auto --gas-adjustment 1.5 --keyring-backend test
    

    Note the code id in the output:

    {"height":"128801","txhash":"3D37B9AD0745926F8EF83DF12389D1AB5656D6907B4D25DDA9F0C13B0FF04AB5","codespace":"","code":0,"data":"0A460A1E2F636F736D7761736D2E7761736D2E76312E4D736753746F7265436F64651224080A1220EEBB601D4F72AF3FDBEBCDF60D8C894B2CCDF0EBC7C99D3F1C89B01C95E46CDE","raw_log":"[{\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgStoreCode\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"axelar1ypt7vtlj4c67ezex8nwc0vm0acf6d6evss2dau\"}]},{\"type\":\"store_code\",\"attributes\":[{\"key\":\"code_checksum\",\"value\":\"eebb601d4f72af3fdbebcdf60d8c894b2ccdf0ebc7c99d3f1c89b01c95e46cde\"},{\"key\":\"code_id\",\"value\":\"10\"}]}]}]","logs":[{"msg_index":0,"log":"","events":[{"type":"message","attributes":[{"key":"action","value":"/cosmwasm.wasm.v1.MsgStoreCode"},{"key":"module","value":"wasm"},{"key":"sender","value":"axelar1ypt7vtlj4c67ezex8nwc0vm0acf6d6evss2dau"}]},{"type":"store_code","attributes":[{"key":"code_checksum","value":"eebb601d4f72af3fdbebcdf60d8c894b2ccdf0ebc7c99d3f1c89b01c95e46cde"},{"key":"code_id","value":"10"}]}]}],"info":"","gas_wanted":"4211110","gas_used":"2120364","tx":null,"timestamp":"","events":[{"type":"coin_spent","attributes":[{"key":"c3BlbmRlcg==","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true},{"key":"YW1vdW50","value":"Mjk0Nzh1YW1wbGlmaWVy","index":true}]},{"type":"coin_received","attributes":[{"key":"cmVjZWl2ZXI=","value":"YXhlbGFyMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsNWg0Z3F1","index":true},{"key":"YW1vdW50","value":"Mjk0Nzh1YW1wbGlmaWVy","index":true}]},{"type":"transfer","attributes":[{"key":"cmVjaXBpZW50","value":"YXhlbGFyMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsNWg0Z3F1","index":true},{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true},{"key":"YW1vdW50","value":"Mjk0Nzh1YW1wbGlmaWVy","index":true}]},{"type":"message","attributes":[{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"tx","attributes":[{"key":"ZmVl","value":"Mjk0Nzh1YW1wbGlmaWVy","index":true},{"key":"ZmVlX3BheWVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"tx","attributes":[{"key":"YWNjX3NlcQ==","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1LzY=","index":true}]},{"type":"tx","attributes":[{"key":"c2lnbmF0dXJl","value":"SlRyc3F0UnczS2ZhYWljRjBNWHg1QzNXQnNxdTgxeVJHRnFIMWIyUnEzd1lFdG9WSlBpY25DZnRrdURQSXM5czRyRGFJMTFVZkVseFhOenB3NTFtbEE9PQ==","index":true}]},{"type":"message","attributes":[{"key":"YWN0aW9u","value":"L2Nvc213YXNtLndhc20udjEuTXNnU3RvcmVDb2Rl","index":true}]},{"type":"message","attributes":[{"key":"bW9kdWxl","value":"d2FzbQ==","index":true},{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"store_code","attributes":[{"key":"Y29kZV9jaGVja3N1bQ==","value":"ZWViYjYwMWQ0ZjcyYWYzZmRiZWJjZGY2MGQ4Yzg5NGIyY2NkZjBlYmM3Yzk5ZDNmMWM4OWIwMWM5NWU0NmNkZQ==","index":true},{"key":"Y29kZV9pZA==","value":"MTA=","index":true}]}]}
    
  5. Deploy the multisig prover:

    axelard tx wasm store artifacts/multisig_prover.wasm --node http://devnet-amplifier.axelar.dev:26657 --from wallet --chain-id devnet-amplifier --gas auto --gas-adjustment 1.5 --keyring-backend test
    

    Note the code id in the output:

    {"height":"128925","txhash":"46622CBF0BAC046C27CB455AFEFAF9DCD8F7D89C9D6768E533F5CC17769B09F3","codespace":"","code":0,"data":"0A460A1E2F636F736D7761736D2E7761736D2E76312E4D736753746F7265436F64651224080B122098170453109EF00C5B22ED476B80411EC309E1AEE174CDD59A4A4DAB336CCDAC","raw_log":"[{\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgStoreCode\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"axelar1ypt7vtlj4c67ezex8nwc0vm0acf6d6evss2dau\"}]},{\"type\":\"store_code\",\"attributes\":[{\"key\":\"code_checksum\",\"value\":\"98170453109ef00c5b22ed476b80411ec309e1aee174cdd59a4a4dab336ccdac\"},{\"key\":\"code_id\",\"value\":\"11\"}]}]}]","logs":[{"msg_index":0,"log":"","events":[{"type":"message","attributes":[{"key":"action","value":"/cosmwasm.wasm.v1.MsgStoreCode"},{"key":"module","value":"wasm"},{"key":"sender","value":"axelar1ypt7vtlj4c67ezex8nwc0vm0acf6d6evss2dau"}]},{"type":"store_code","attributes":[{"key":"code_checksum","value":"98170453109ef00c5b22ed476b80411ec309e1aee174cdd59a4a4dab336ccdac"},{"key":"code_id","value":"11"}]}]}],"info":"","gas_wanted":"8377414","gas_used":"4203516","tx":null,"timestamp":"","events":[{"type":"coin_spent","attributes":[{"key":"c3BlbmRlcg==","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true},{"key":"YW1vdW50","value":"NTg2NDJ1YW1wbGlmaWVy","index":true}]},{"type":"coin_received","attributes":[{"key":"cmVjZWl2ZXI=","value":"YXhlbGFyMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsNWg0Z3F1","index":true},{"key":"YW1vdW50","value":"NTg2NDJ1YW1wbGlmaWVy","index":true}]},{"type":"transfer","attributes":[{"key":"cmVjaXBpZW50","value":"YXhlbGFyMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsNWg0Z3F1","index":true},{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true},{"key":"YW1vdW50","value":"NTg2NDJ1YW1wbGlmaWVy","index":true}]},{"type":"message","attributes":[{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"tx","attributes":[{"key":"ZmVl","value":"NTg2NDJ1YW1wbGlmaWVy","index":true},{"key":"ZmVlX3BheWVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"tx","attributes":[{"key":"YWNjX3NlcQ==","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1Lzg=","index":true}]},{"type":"tx","attributes":[{"key":"c2lnbmF0dXJl","value":"allvMWNsNUxHdC9DNkR4bGIxUG1MczJUY0VGckhNOUtGNEkybVRQVlNRUmFMcGNhdkxuRWR4ZFNBYnlnVWZFT3R2dDBtUjBhbnFoTk1Tb2ZTNnNlL1E9PQ==","index":true}]},{"type":"message","attributes":[{"key":"YWN0aW9u","value":"L2Nvc213YXNtLndhc20udjEuTXNnU3RvcmVDb2Rl","index":true}]},{"type":"message","attributes":[{"key":"bW9kdWxl","value":"d2FzbQ==","index":true},{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"store_code","attributes":[{"key":"Y29kZV9jaGVja3N1bQ==","value":"OTgxNzA0NTMxMDllZjAwYzViMjJlZDQ3NmI4MDQxMWVjMzA5ZTFhZWUxNzRjZGQ1OWE0YTRkYWIzMzZjY2RhYw==","index":true},{"key":"Y29kZV9pZA==","value":"MTE=","index":true}]}]}
    
  6. Instantiate the voting verifier:

    axelard tx wasm instantiate [voting verifier CODE ID] '{"service_registry_address":"axelar1hrpna9v7vs3stzyd4z3xf00676kf78zpe2u5ksvljswn2vnjp3ystlgl4x","service_name":"validators","source_gateway_address":"0xCa85f85C72df5f8428a440887CA7c449D94e0D0c","confirmation_height":1,"block_expiry":10,"source_chain":"test","rewards_address":"axelar1wkwy0xh89ksdgj9hr347dyd2dw7zesmtrue6kfzyml4vdtz6e5ws2pvc5e","voting_threshold":["9","10"]}' --from wallet --chain-id devnet-amplifier --gas auto --gas-adjustment 1.5 --gas-prices 0.007uamplifier --node http://devnet-amplifier.axelar.dev:26657 --keyring-backend test --label test-voting-verifier --no-admin
    

    Note the contract address in the output:

    {"height":"128761","txhash":"B122F59D82CC52C5E69DBEDAB4D4F41DFFC125312DBA4220EDD979A568637FD6","codespace":"","code":0,"data":"0A6F0A282F636F736D7761736D2E7761736D2E76312E4D7367496E7374616E7469617465436F6E747261637412430A416178656C6172317833393630747739636D6C3678737174767A7434676D77337363617561786464383372687339646D6C706A666A66397A397337716A783867306A","raw_log":"[{\"events\":[{\"type\":\"instantiate\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"axelar1x3960tw9cml6xsqtvzt4gmw3scauaxdd83rhs9dmlpjfjf9z9s7qjx8g0j\"},{\"key\":\"code_id\",\"value\":\"9\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgInstantiateContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"axelar1ypt7vtlj4c67ezex8nwc0vm0acf6d6evss2dau\"}]},{\"type\":\"wasm-instantiated\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"axelar1x3960tw9cml6xsqtvzt4gmw3scauaxdd83rhs9dmlpjfjf9z9s7qjx8g0j\"},{\"key\":\"service_name\",\"value\":\"validators\"},{\"key\":\"service_registry_contract\",\"value\":\"axelar1hrpna9v7vs3stzyd4z3xf00676kf78zpe2u5ksvljswn2vnjp3ystlgl4x\"},{\"key\":\"source_gateway_address\",\"value\":\"0xCa85f85C72df5f8428a440887CA7c449D94e0D0c\"},{\"key\":\"voting_threshold\",\"value\":\"[\\\"9\\\",\\\"10\\\"]\"},{\"key\":\"block_expiry\",\"value\":\"10\"},{\"key\":\"confirmation_height\",\"value\":\"1\"}]}]}]","logs":[{"msg_index":0,"log":"","events":[{"type":"instantiate","attributes":[{"key":"_contract_address","value":"axelar1x3960tw9cml6xsqtvzt4gmw3scauaxdd83rhs9dmlpjfjf9z9s7qjx8g0j"},{"key":"code_id","value":"9"}]},{"type":"message","attributes":[{"key":"action","value":"/cosmwasm.wasm.v1.MsgInstantiateContract"},{"key":"module","value":"wasm"},{"key":"sender","value":"axelar1ypt7vtlj4c67ezex8nwc0vm0acf6d6evss2dau"}]},{"type":"wasm-instantiated","attributes":[{"key":"_contract_address","value":"axelar1x3960tw9cml6xsqtvzt4gmw3scauaxdd83rhs9dmlpjfjf9z9s7qjx8g0j"},{"key":"service_name","value":"validators"},{"key":"service_registry_contract","value":"axelar1hrpna9v7vs3stzyd4z3xf00676kf78zpe2u5ksvljswn2vnjp3ystlgl4x"},{"key":"source_gateway_address","value":"0xCa85f85C72df5f8428a440887CA7c449D94e0D0c"},{"key":"voting_threshold","value":"[\"9\",\"10\"]"},{"key":"block_expiry","value":"10"},{"key":"confirmation_height","value":"1"}]}]}],"info":"","gas_wanted":"337608","gas_used":"183564","tx":null,"timestamp":"","events":[{"type":"coin_spent","attributes":[{"key":"c3BlbmRlcg==","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true},{"key":"YW1vdW50","value":"MjM2NHVhbXBsaWZpZXI=","index":true}]},{"type":"coin_received","attributes":[{"key":"cmVjZWl2ZXI=","value":"YXhlbGFyMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsNWg0Z3F1","index":true},{"key":"YW1vdW50","value":"MjM2NHVhbXBsaWZpZXI=","index":true}]},{"type":"transfer","attributes":[{"key":"cmVjaXBpZW50","value":"YXhlbGFyMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsNWg0Z3F1","index":true},{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true},{"key":"YW1vdW50","value":"MjM2NHVhbXBsaWZpZXI=","index":true}]},{"type":"message","attributes":[{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"tx","attributes":[{"key":"ZmVl","value":"MjM2NHVhbXBsaWZpZXI=","index":true},{"key":"ZmVlX3BheWVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"tx","attributes":[{"key":"YWNjX3NlcQ==","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1LzU=","index":true}]},{"type":"tx","attributes":[{"key":"c2lnbmF0dXJl","value":"aUZiWXlzbVQ0cVR0UjMyd1E3Wk9wMnhnQms2T3dVV3NsQmUvWHNleG04SUlocFQyWVc0ZWJsMFVlczVHL0hXd2NoOEJ4bzVYZWJtUDFZSHFLRVh0Unc9PQ==","index":true}]},{"type":"message","attributes":[{"key":"YWN0aW9u","value":"L2Nvc213YXNtLndhc20udjEuTXNnSW5zdGFudGlhdGVDb250cmFjdA==","index":true}]},{"type":"message","attributes":[{"key":"bW9kdWxl","value":"d2FzbQ==","index":true},{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"instantiate","attributes":[{"key":"X2NvbnRyYWN0X2FkZHJlc3M=","value":"YXhlbGFyMXgzOTYwdHc5Y21sNnhzcXR2enQ0Z213M3NjYXVheGRkODNyaHM5ZG1scGpmamY5ejlzN3FqeDhnMGo=","index":true},{"key":"Y29kZV9pZA==","value":"OQ==","index":true}]},{"type":"wasm-instantiated","attributes":[{"key":"X2NvbnRyYWN0X2FkZHJlc3M=","value":"YXhlbGFyMXgzOTYwdHc5Y21sNnhzcXR2enQ0Z213M3NjYXVheGRkODNyaHM5ZG1scGpmamY5ejlzN3FqeDhnMGo=","index":true},{"key":"c2VydmljZV9uYW1l","value":"dmFsaWRhdG9ycw==","index":true},{"key":"c2VydmljZV9yZWdpc3RyeV9jb250cmFjdA==","value":"YXhlbGFyMWhycG5hOXY3dnMzc3R6eWQ0ejN4ZjAwNjc2a2Y3OHpwZTJ1NWtzdmxqc3duMnZuanAzeXN0bGdsNHg=","index":true},{"key":"c291cmNlX2dhdGV3YXlfYWRkcmVzcw==","value":"MHhDYTg1Zjg1QzcyZGY1Zjg0MjhhNDQwODg3Q0E3YzQ0OUQ5NGUwRDBj","index":true},{"key":"dm90aW5nX3RocmVzaG9sZA==","value":"WyI5IiwiMTAiXQ==","index":true},{"key":"YmxvY2tfZXhwaXJ5","value":"MTA=","index":true},{"key":"Y29uZmlybWF0aW9uX2hlaWdodA==","value":"MQ==","index":true}]}]}
    
  7. Instantiate the gateway:

    axelard tx wasm instantiate [gateway CODE ID] '{"verifier_address":"axelar1x3960tw9cml6xsqtvzt4gmw3scauaxdd83rhs9dmlpjfjf9z9s7qjx8g0j","router_address":"axelar1fmsa0f5rs5jyauama96k0umzkktemqawrtn28zrjc0rvx47f68fqckxwuj"}' --from wallet --chain-id devnet-amplifier --gas auto --gas-adjustment 1.5 --gas-prices 0.007uamplifier --keyring-backend test --node http://devnet-amplifier.axelar.dev:26657 --keyring-backend test --label test-gateway --no-admin
    

    Note the contract address in the output:

    {"height":"128825","txhash":"215582F1D80C761F188A1A147127D1CBC4BD4F16466AED0CBE7CE1B008AFA3D7","codespace":"","code":0,"data":"0A6F0A282F636F736D7761736D2E7761736D2E76312E4D7367496E7374616E7469617465436F6E747261637412430A416178656C61723172636D7666736E37377064366D30346374716A33776375363670767277397032363563646C373277347A61726675703272763771707279673764","raw_log":"[{\"events\":[{\"type\":\"instantiate\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"axelar1rcmvfsn77pd6m04ctqj3wcu66pvrw9p265cdl72w4zarfup2rv7qpryg7d\"},{\"key\":\"code_id\",\"value\":\"10\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgInstantiateContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"axelar1ypt7vtlj4c67ezex8nwc0vm0acf6d6evss2dau\"}]}]}]","logs":[{"msg_index":0,"log":"","events":[{"type":"instantiate","attributes":[{"key":"_contract_address","value":"axelar1rcmvfsn77pd6m04ctqj3wcu66pvrw9p265cdl72w4zarfup2rv7qpryg7d"},{"key":"code_id","value":"10"}]},{"type":"message","attributes":[{"key":"action","value":"/cosmwasm.wasm.v1.MsgInstantiateContract"},{"key":"module","value":"wasm"},{"key":"sender","value":"axelar1ypt7vtlj4c67ezex8nwc0vm0acf6d6evss2dau"}]}]}],"info":"","gas_wanted":"306362","gas_used":"167941","tx":null,"timestamp":"","events":[{"type":"coin_spent","attributes":[{"key":"c3BlbmRlcg==","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true},{"key":"YW1vdW50","value":"MjE0NXVhbXBsaWZpZXI=","index":true}]},{"type":"coin_received","attributes":[{"key":"cmVjZWl2ZXI=","value":"YXhlbGFyMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsNWg0Z3F1","index":true},{"key":"YW1vdW50","value":"MjE0NXVhbXBsaWZpZXI=","index":true}]},{"type":"transfer","attributes":[{"key":"cmVjaXBpZW50","value":"YXhlbGFyMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsNWg0Z3F1","index":true},{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true},{"key":"YW1vdW50","value":"MjE0NXVhbXBsaWZpZXI=","index":true}]},{"type":"message","attributes":[{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"tx","attributes":[{"key":"ZmVl","value":"MjE0NXVhbXBsaWZpZXI=","index":true},{"key":"ZmVlX3BheWVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"tx","attributes":[{"key":"YWNjX3NlcQ==","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1Lzc=","index":true}]},{"type":"tx","attributes":[{"key":"c2lnbmF0dXJl","value":"MS8vWm4xZGM4K0JCUWc2VnBTVUxFUUdzVFhocm5zUFBkR1VPS3hIYzZJTW5oVUdDUmNhangwTkU0QlVPSXpRekJQcCtCekh1RHFQY0plZk9MUCtvdnc9PQ==","index":true}]},{"type":"message","attributes":[{"key":"YWN0aW9u","value":"L2Nvc213YXNtLndhc20udjEuTXNnSW5zdGFudGlhdGVDb250cmFjdA==","index":true}]},{"type":"message","attributes":[{"key":"bW9kdWxl","value":"d2FzbQ==","index":true},{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"instantiate","attributes":[{"key":"X2NvbnRyYWN0X2FkZHJlc3M=","value":"YXhlbGFyMXJjbXZmc243N3BkNm0wNGN0cWozd2N1NjZwdnJ3OXAyNjVjZGw3Mnc0emFyZnVwMnJ2N3FwcnlnN2Q=","index":true},{"key":"Y29kZV9pZA==","value":"MTA=","index":true}]}]}
    
  8. Instantiate the multisig prover:

    axelard tx wasm instantiate [multisig prover CODE ID] '{"admin_address": "axelar1zlr7e5qf3sz7yf890rkh9tcnu87234k6k7ytd9","gateway_address":"axelar1rcmvfsn77pd6m04ctqj3wcu66pvrw9p265cdl72w4zarfup2rv7qpryg7d","multisig_address":"axelar1ufs3tlq4umljk0qfe8k5ya0x6hpavn897u2cnf9k0en9jr7qarqqa9263g","service_registry_address":"axelar1hrpna9v7vs3stzyd4z3xf00676kf78zpe2u5ksvljswn2vnjp3ystlgl4x","voting_verifier_address":"axelar1x3960tw9cml6xsqtvzt4gmw3scauaxdd83rhs9dmlpjfjf9z9s7qjx8g0j","destination_chain_id": "43113","signing_threshold": ["4","5"],"service_name": "validators","chain_name":"test","worker_set_diff_threshold": 1,"encoder": "abi","key_type": "ecdsa"}' --from wallet --chain-id devnet-amplifier --gas auto --gas-adjustment 1.5 --gas-prices 0.007uamplifier --node http://devnet-amplifier.axelar.dev:26657  --keyring-backend test --label test-prover --no-admin
    

    Note the contract address in the output:

    {"height":"129075","txhash":"717621FB153F75B6329CB03064EFE175C6545201B4E3E0667DCCE633147C00F4","codespace":"","code":0,"data":"0A6F0A282F636F736D7761736D2E7761736D2E76312E4D7367496E7374616E7469617465436F6E747261637412430A416178656C61723173346A776D373239646133753968723976656A386D77363575757A7A77767772646E70366C30726B37336D307865663267727A71336D306D7277","raw_log":"[{\"events\":[{\"type\":\"instantiate\",\"attributes\":[{\"key\":\"_contract_address\",\"value\":\"axelar1s4jwm729da3u9hr9vej8mw65uuzzwvwrdnp6l0rk73m0xef2grzq3m0mrw\"},{\"key\":\"code_id\",\"value\":\"11\"}]},{\"type\":\"message\",\"attributes\":[{\"key\":\"action\",\"value\":\"/cosmwasm.wasm.v1.MsgInstantiateContract\"},{\"key\":\"module\",\"value\":\"wasm\"},{\"key\":\"sender\",\"value\":\"axelar1ypt7vtlj4c67ezex8nwc0vm0acf6d6evss2dau\"}]}]}]","logs":[{"msg_index":0,"log":"","events":[{"type":"instantiate","attributes":[{"key":"_contract_address","value":"axelar1s4jwm729da3u9hr9vej8mw65uuzzwvwrdnp6l0rk73m0xef2grzq3m0mrw"},{"key":"code_id","value":"11"}]},{"type":"message","attributes":[{"key":"action","value":"/cosmwasm.wasm.v1.MsgInstantiateContract"},{"key":"module","value":"wasm"},{"key":"sender","value":"axelar1ypt7vtlj4c67ezex8nwc0vm0acf6d6evss2dau"}]}]}],"info":"","gas_wanted":"365482","gas_used":"197501","tx":null,"timestamp":"","events":[{"type":"coin_spent","attributes":[{"key":"c3BlbmRlcg==","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true},{"key":"YW1vdW50","value":"MjU1OXVhbXBsaWZpZXI=","index":true}]},{"type":"coin_received","attributes":[{"key":"cmVjZWl2ZXI=","value":"YXhlbGFyMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsNWg0Z3F1","index":true},{"key":"YW1vdW50","value":"MjU1OXVhbXBsaWZpZXI=","index":true}]},{"type":"transfer","attributes":[{"key":"cmVjaXBpZW50","value":"YXhlbGFyMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsNWg0Z3F1","index":true},{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true},{"key":"YW1vdW50","value":"MjU1OXVhbXBsaWZpZXI=","index":true}]},{"type":"message","attributes":[{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"tx","attributes":[{"key":"ZmVl","value":"MjU1OXVhbXBsaWZpZXI=","index":true},{"key":"ZmVlX3BheWVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"tx","attributes":[{"key":"YWNjX3NlcQ==","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1Lzk=","index":true}]},{"type":"tx","attributes":[{"key":"c2lnbmF0dXJl","value":"aEdKcVA4NXVwdVRjdEtFWDF0SDV1eXRXUml1L1JDTUlwTnl1Y0oyVFR3dHQ0ZTQ0YkVhVEovOXBrdkF5VzRWajZlQnhJYjFoZFFCeWFJMkJtZGx2VHc9PQ==","index":true}]},{"type":"message","attributes":[{"key":"YWN0aW9u","value":"L2Nvc213YXNtLndhc20udjEuTXNnSW5zdGFudGlhdGVDb250cmFjdA==","index":true}]},{"type":"message","attributes":[{"key":"bW9kdWxl","value":"d2FzbQ==","index":true},{"key":"c2VuZGVy","value":"YXhlbGFyMXlwdDd2dGxqNGM2N2V6ZXg4bndjMHZtMGFjZjZkNmV2c3MyZGF1","index":true}]},{"type":"instantiate","attributes":[{"key":"X2NvbnRyYWN0X2FkZHJlc3M=","value":"YXhlbGFyMXM0andtNzI5ZGEzdTlocjl2ZWo4bXc2NXV1enp3dndyZG5wNmwwcms3M20weGVmMmdyenEzbTBtcnc=","index":true},{"key":"Y29kZV9pZA==","value":"MTE=","index":true}]}]}
    
  9. Send the chain’s gateway and multisig prover contract addresses to the Interop Labs team by filling out the Axelar Amplifier Integration Form. The team will register the chain and gateway with the router and authorize the prover.

Option 3: Deploy a custom implementation of the Amplifier contracts

You can also deploy a custom implementation of the gateway, verifier, and prover contracts and optimize them with the Cosmwasm rust-optimizer. Follow the same steps as Option 2 with your own implementations of the Amplifier contracts.

Add verifiers to your chain

Every new chain will need a verifier, which requires running ampd and tofnd. See Become an Amplifier Verifier (Worker) for detailed instructions on how to do this on your machine.

Begin routing messages

Once your chain is registered with the protocol, it will need verifiers to begin routing messages. See Become an Amplifier Verifier (Worker) for instructions to onboard a verifier. Note that chain integrators will onboard on devnet-amplifier and not devnet-verifier.

Edit this page