I'm trying to figure out how Axelar links different blockchain types (Cosmos-like and EVM)
Axelar currently allows the following types of cross-chain interactions:
1. EVM - Cosmos
2. EVM 1 - EVM 2
3. Cosmos 1 - Cosmos 2
Axelar itself is built on the Cosmos SDK and can communicate with some blockchains (zones) of the Cosmos ecosystem via the IBC protocol
Do I have the right understanding:
Axelar interacts with EVM networks by one mechanism (threshold signature mechanic) and with cosmos-like networks by another (light client mechanic).
Let's assume that Axelar supports a total of N networks. In this case, X is the number of supported networks in the Cosmos ecosystem, Y is the number of supported networks external to Cosmos (Ethereum, Fantom, Celo, etc.). It turns out that N= X + Y.
In the case of Y "external networks", Axelar has Y RPC connectivity to the nodes of those networks. Technically, this means that Axelar validator nodes are connected to N nodes of supported blockchains. The nodes scan the new blocks for the presence of the Gateway's contracted inevents, gather consensus on those inevents, and write them to the nodes' storage. Cross-chain calls are not delivered to the destination network by Axelar nodes, but by relayers. The delivery process is permisionless.
In the case of X "cosmos networks", Axelar doesn't need RPC.
In the case of X "cosmos-like networks", Axelar communicates according to the Light client model. This means that Axelar has a connection to each of the networks shown in the screenshot above. That is, there is at least 1 relayer between Axelar and each supported Cosmos blockchain, which handles: a) updating the state of the light client b) delivering messages between blockchains
Cosmos-chain A ---> Cosmos-chain B
In the case of interaction between cosmos-like networks, Axelar plays an intermediary role in case Cosmos-chain A and Cosmos-chain B have no IBC connection, but they do have a connection to Axelar. In this case it looks like this:
////////////////////////////////////////
Cosmos-chain A ---> EVM
In the case of interaction between Cosmos-chain A and EVM network. The actions are as follows:
////////////////////////////////////////
EVM ---> Cosmos-chain A
In the case of interaction between EVM network and Cosmos-chain A. The actions are as follows:
////////////////////////////////////////
EVM 1 ---> EVM 2
The actions are as follows:
Is my understanding of this correct? Or is there something I am getting wrong?
There are some minor inaccuracies or naming differences (for example, the cross-chain calls in EVM to EVM are detected by the relayers, not the validators. It's them submitted to the Axelar Network and voted on by validators running their own nodes) or that we call the "cross-chain call" in stage 6 is first an approval than execution of the endpoint contract.
But overall, upon a brief review, this looks right.