Overview
As a validator for the Axelar network, your Axelar node will vote on the status of external blockchains such as Ethereum, Cosmos, etc. Specifically:
- Select which external chains your Axelar node will support. Set up and configure your own nodes for the chains you selected.
- Provide RPC endpoints for these nodes to your Axelar validator node and register as a maintainer for these chains on the Axelar network.
External chains you can support on Axelar
- EVM-compatible chains
- Cosmos chains
- Nothing to do. All Cosmos chains are automatically supported by default.
Add external chain info to your validator's configuration
In the axelarate-community
git repo edit the file configuration/config.toml
: set the rpc_addr
and start-with-bridge
entries corresponding to the external chain you wish to connect.
Your config.toml
file should already contain a snippet like the following:
##### EVM bridges options #####
# Each EVM chain needs the following
# 1. `[[axelar_bridge_evm]]` # header
# 2. `name` # chain name (eg. "Ethereum")
# 3. 'rpc_addr' # EVM RPC endpoint URL; chain maintainers set their own endpoint
# 4. `start-with-bridge` # `true` to support this chain
#
# see https://docs.axelar.dev/validator/external-chains
[[axelar_bridge_evm]]
name = "Ethereum"
rpc_addr = ""
start-with-bridge = false
[[axelar_bridge_evm]]
name = "Avalanche"
rpc_addr = ""
start-with-bridge = false
[[axelar_bridge_evm]]
name = "Fantom"
rpc_addr = ""
start-with-bridge = false
[[axelar_bridge_evm]]
name = "Moonbeam"
rpc_addr = ""
start-with-bridge = false
[[axelar_bridge_evm]]
name = "Polygon"
rpc_addr = ""
start-with-bridge = false
Example: Ethereum
Edit the Ethereum
entry::
[[axelar_bridge_evm]]
name = "Ethereum"
rpc_addr = "my_ethereum_host"
start-with-bridge = true
Substitute your Ethereum RPC address for my_ethereum_host
. Be sure to set start-with-bridge
to true
.
Restart your companion processes
Caution: Do not stop the axelar-core
process. If you stop axelar-core
then you risk downtime for Tendermint consensus, which can result in penalties.
Caution: If vald
, tofnd
are stopped for too long then your validator might fail to produce a heartbeat transaction when needed. The risk of this event can be reduced to near-zero if you promptly restart these processes shortly after a recent round of heartbeat transactions.
Tip: Heartbeat events are emitted every 50 blocks. Your validator typically responds to heartbeat events within 1-2 blocks. It should be safe to restart vald
, tofnd
at block heights that are 5-10 mod 50.
Stop your companion processes vald
, tofnd
.
kill -9 $(pgrep tofnd)
kill -9 $(pgrep -f "axelard vald-start")
Immediately resume your companion processes vald
, tofnd
:
KEYRING_PASSWORD=my-secret-password TOFND_PASSWORD=my-tofnd-password ./scripts/validator-tools-host.sh -n mainnet
Check your connections to new chains in vald
Check your vald
logs to see that your validator node has successfully connected to the new EVM chains you added. [How to view logs.]
You should see something like:
2021-11-25T01:25:54Z INF Successfully connected to EVM bridge for chain Ethereum module=vald
2021-11-25T01:25:54Z INF Successfully connected to EVM bridge for chain Avalanche module=vald
2021-11-25T01:25:54Z INF Successfully connected to EVM bridge for chain Fantom module=vald
2021-11-25T01:25:54Z INF Successfully connected to EVM bridge for chain Moonbeam module=vald
2021-11-25T01:25:54Z INF Successfully connected to EVM bridge for chain Polygon module=vald
Register as a maintainer of external chains
For each external blockchain you selected earlier you must inform the Axelar network of your intent to maintain that chain. This is accomplished via the register-chain-maintainer
command.
Example: multiple EVM chains in one command:
echo my-secret-password | ~/.axelar/bin/axelard tx nexus register-chain-maintainer avalanche ethereum fantom moonbeam polygon --from broadcaster --chain-id axelar-dojo-1 --home ~/.axelar/.vald --gas auto --gas-adjustment 1.5
Validator voting for maintained chains
If you have added an RPC endpoint to your configuration for chain C then your validator will always post vote messages for chain C on the Axelar network, regardless of whether you are registered as a maintainer for chain C. (Why? Because the vald
process that posts vote messages is stateless; it doesn't know whether your validator is registered as a maintainer for chain C.)
The Axelar consensus protocol simply ignores all votes for chain C events from those validators who are not registered as a maintainer for C.
Caution: If for some reason you need to deregister as chain maintainer for a chain C then you should also disable the RPC endpoint for C (set start-with-bridge = false
in your config.toml
file) and then restart vald. Otherwise, your validator will continue to post vote messages for chain C on the Axelar network, leading to the following consequences:
- Your broadcaster account will lose funds because the Axelar network does not refund transaction fees for vote messages unless you are a registered maintainer for chain C.
- You will see spurious error messages in your vald logs.
- Axelar dashboards might display your votes for chain C even though you are not a registered maintainer for C.