Become an Amplifier Verifier

đź’ˇ

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.

By running a verifier for a chain integration with Axelar’s Amplifier, you will be responsible for voting on the validity of transactions on the Axelar network and signing command batches for a given chain.

Prerequisites

These instructions require you to install and use Docker. Please ensure you have a recent version installed on your system.

Setup and configuration

  1. Pull and run tofnd the latest version of tofnd:

    docker pull haiyizxx/tofnd:latest
    docker run -p 50051:50051 --env MNEMONIC_CMD=auto --env NOPASSWORD=true -v tofnd:/.tofnd haiyizxx/tofnd:latest
    

    Leave this process running in the background, and perform additional commands in a new terminal window or shell.

  2. Download ampd, the off-chain daemon responsible for voting and signing with the amplifier protocol.

    We recommend downloading the ampd binary (Linux, Apple Silicon Mac, Intel Mac). All instructions in this tutorial will assume you have a binary in your PATH named ampd.

    • You can add the ampd binary to your path with sudo ln -s <BINARY NAME> /usr/local/bin/ampd.
    • Alternatively, you can set an alias with alias ampd=<BINARY PATH> and restart your terminal.

    You should make the binary executable with chmod a+x ./ampd-darwin-arm64-v0.1.0, customizing the binary name to match the one you downloaded.

    If you don’t want to add it to your path, you can refer to the binary directly in every command in this tutorial, such as ~/ampd-linux-amd64-v0.1.0 <command>.

    If you get a security warning while trying to run ampd on Mac, you can disable the gatekeeper for a single binary with sudo xattr -d com.apple.quarantine ./ampd-darwin-arm64-v0.1.0 or disable gatekeeper globally with sudo spctl --master-disable.

    There are two other ways to install ampd.

    • You can use ampd from Docker. Make sure you pull the 0.1.0 version and amd64 platform specifically, i.e. docker pull axelarnet/axelar-ampd:v0.1.0 --platform amd64.
    • You can install ampd from source by cloning and building the Axelar Amplifier repository.

ampd needs access to a locally running tofnd instance in order to onboard as a verifier or run the daemon. See the tofnd repository for more info.

  1. Create an ampd configuration file at ~/.ampd/config.toml (or choose a different location and refer to your chosen location later in ampd commands such as ampd -config /home/me/devnet-verifiers.toml). This configuration file tells ampd how to connect to your local tofnd, how to talk to the devnet and the Amplifier smart contracts, and includes a default configuration for verifying transactions on the Avalanche testnet.

    The following is an example config.toml file for the verifier devnet:

    tm_jsonrpc="http://devnet-verifiers.axelar.dev:26657"
    tm_grpc="tcp://devnet-verifiers.axelar.dev:9090"
    event_buffer_cap=1000
    
    [service_registry]
    cosmwasm_contract="axelar1hrpna9v7vs3stzyd4z3xf00676kf78zpe2u5ksvljswn2vnjp3ystlgl4x"
    
    [broadcast]
    batch_gas_limit="1000000"
    broadcast_interval="1s"
    chain_id="devnet-verifiers"
    gas_adjustment="2"
    gas_price="0.00005uverifiers"
    queue_cap="1000"
    tx_fetch_interval="600ms"
    tx_fetch_max_retries="10"
    
    [tofnd_config]
    batch_gas_limit="10000000"
    key_uid="axelar"
    party_uid="ampd"
    url="http://127.0.0.1:50051"
    
    [[handlers]]
    cosmwasm_contract="axelar1ufs3tlq4umljk0qfe8k5ya0x6hpavn897u2cnf9k0en9jr7qarqqa9263g"
    type="MultisigSigner"
    
    [[handlers]]
    chain_name="avalanche"
    chain_rpc_url="https://avalanche-fuji-c-chain-rpc.publicnode.com"
    cosmwasm_contract="axelar1466nf3zuxpya8q9emxukd7vftaf6h4psr0a07srl5zw74zh84yjq4687qd"
    type="EvmMsgVerifier"
    

See the ampd README on GitHub for instructions on formatting a config file for your own projects.

Fund your wallet

Prior to running the ampd daemon, you will need to set up your wallet with devnet funds.

  1. Determine your verifier address:

    ampd worker-address
    
  2. Fund your verifier address.

    1. Join the Axelar Discord.

    2. Get the Developer Role.

    3. Go to the #faucet channel and submit a request with your account to get 100 test tokens:

      !faucet devnet-verifiers [my verifier address]
      

Activate and run your verifier

  1. Bond your verifier:

    ampd bond-worker validators 100 uverifiers
    

    Bonded verifiers will stay bonded until they unbond or are removed by governance.

  2. Register your public key:

    ampd register-public-key
    
  3. Register support for desired chains, enabling ampd to participate in voting and signing for the specified chains. As our configuration only supports Avalanche, the command is:

    ampd register-chain-support validators avalanche
    

    Multiple chain names can be passed, separated by a space (ampd register-chain-support [service name] [chains]...). Note, any chain you want to support here must be configured in your ampd config.toml file.

  4. Authorize your verifier.

    This is dependent on the environment, and can be done via governance, or by the network operators.

    For devnet, fill out the Amplifier Verifier Onboarding Form for your address to be whitelisted.

  5. Run the ampd daemon.

    Running ampd without any command will run the daemon. A state file will be created if it doesn’t yet exist. Its default location is ~/.ampd/state.json, which can be overridden by passing --state [path]

Productionizing

As you move towards testnet and mainnet, you should switch to running your own full Axelar node and your own full node or light client for any chains you are voting on.

Help

For more info about the available commands and options, run:

ampd --help

Feedback

If you have any feedback or would like to report a bug, please file an issue in the Axelar Developer Support repository.

Edit this page