Axelar跨链机制

reference: https://docs.axelar.dev/

跨链转移Token

情况一:Call sendToken() on an EVM source chain
- step 1: 找到 source chain 的 Gateway 的合约地址。
EVM 链使用 Axelar Gateway 智能合约发送Token。 这些是应用程序层智能合约,用于发送和接收有效负载以及监控交易状态。
Gateway合约的接口如下。

1
2
3
4
5
6
function sendToken(
string memory destinationChain,
string memory destinationAddress,
string memory symbol,
uint256 amount
) external;
- step 2: 调用 source chain 的approve()。
- step 3: 在 source chain 上,利用Gateway合约将调用sendToken()。
1
2
3
4
5
6
sendToken(
"avalanche", // destination chain name
"0xF16DfB26e1FEc993E085092563ECFAEaDa7eD7fD", // some destination wallet address (should be your own)
"axlUSDC", // asset symbol, can be differ by chain, see above
100000000 // amount (in atomic units)
)

此时,token将出现在目标链(destination chain)的地址上。

情况二:## Call sendToken() on a Cosmos-based source chain
基于COSMOS的 source chain的话,sendToken()是一笔IBC的交易。消息(message)被投送到 Axelar 到一个固定的地址上axelar1dv4u5k73pzqrxlzujxg3qp8kvc3pje7jtdvu72npnt5zhq05ejcsn5qme5,该地址在Axelar网络上,被用于接收GMP消息,消息格式如下:

1
2
3
4
5
6
{
destination_chain,
destination_address,
payload: null,
type: 3, // corresponds to the `sendToken` command on Axelar
}

利用AxelarJS SDK调用sendToken()

前端应用可以利用AxelarJS SDK调用sendToken()。

使用存款地址(deposit address)转移资产

存款地址(deposit address)是由 Axelar 中继服务(Relayer)创建和监控的临时一次性地址。 存款地址通常最多可运行 24 小时。如果出现以下情况,请使用存款地址:

  • 您需要 sendToken() 方法未提供的功能,例如 Cosmos-to-X。
  • 您希望允许从不与 Axelar 交互的钱包进行Token转移,例如从中心化交易所提取资金时。
    如需使用存款地址转移资产,需要使用AxelarJS SDK并发起AxelarAssetTransfer。

构建跨链代币(Interchain Token)

链间代币是可在多个区块链上使用的 ERC-20 token。借助 Axelar 的链间代币服务 (Interchain Token Service),可以从头开始创建新的跨链代币,也可以更新以太坊区块链上已存在的Token。如果Token不被 Axelar 支持,将该Token加入链间代币服务 (Interchain Token Service)即可。