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.
For item 2 above the following tasks should always be done together:
- Enable/disable RPC endpoints.
- Register/deregister as chain maintainer.
Failure to do these tasks together could result in loss of transaction fees, loss of validator rewards, and poor validator performance.
See below for details. Read this entire article before you begin supporting external chains.
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
Edit your vald
config $AXELARD_HOME/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
[[axelar_bridge_evm]]
name = "binance"
rpc_addr = ""
start-with-bridge = false
[[axelar_bridge_evm]]
name = "aurora"
rpc_addr = ""
start-with-bridge = false
Example: Aurora
Edit the Aurora
entry::
[[axelar_bridge_evm]]
name = "aurora"
rpc_addr = "http://69.100.6.9:10080"
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
as per Launch companion processes.
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
2021-11-25T01:25:54Z INF Successfully connected to EVM bridge for chain Binance module=vald
2021-11-25T01:25:54Z INF Successfully connected to EVM bridge for chain Aurora module=vald
Register as a maintainer of external chains
For each external chain C you selected earlier you must inform the Axelar network of your intent to maintain C. This is accomplished via the register-chain-maintainer
command.
Since vald
uses the broadcaster account,
it is recommended to be shut down when submitting this command to avoid
running into sequence mismatch errors due to concurrent signing.
Example: