@axelar-network/axelar-cgp-solidity

中文文档
6.5.0发布于 2026/08/12MITCommonJS近 30 天下载 1.9万

EVM 阿克塞尔网络智能合同

中文使用文档
文档目录9 节
  1. 议定书概览
  2. 构建
  3. 部署合同
  4. 实时网络测试
  5. 调试步骤
  6. 示例流量
  7. 调试
  8. 跨链智能合同呼叫
  9. 参考资料

Axelar跨链网关协议固态性实施

议定书概览

Axelar是一个分散的互操作网络,通过一套通用协议和API连接所有区块链,资产和app. 它建在宇宙SDK上方 用户/应用程序可以使用Axelar网络在任何Cosmos和EVM链之间发送令牌. 他们也可以 在 EVM 链之间发送任意信息.

Axelar网络的分散验证器确认EVM链上排放出的事件(如存款确认和发送信息), 并签署(通过自动服务)提交网关智能合同的命令(如铸造信使和批准目的地信息).

见 这个医生 为更多的设计信息.

构建

我们建议使用最新的节点 LTS 版本。 。 。 .

npm ci

npm run build

npm run test

预编译字节代码可见于 释放。 。 。 . 此外,预先编译的字节码和ABI在 npm 软件包 并可通过下列方式导入:

npm i @axelar-network/axelar-cgp-solidity
const IAxelarGateway = require('@axelar-network/axelar-cgp-solidity/artifacts/interfaces/IAxelarGateway.json');

const AxelarGateway = require('@axelar-network/axelar-cgp-solidity/artifacts/contracts/AxelarGateway.sol/AxelarGateway.json');

部署合同

见Axelar合同部署 仓库 用于相关部署/升级脚本:

  1. 网关部署
  2. 网关升级
  3. 天然气服务部署和升级

实时网络测试

  1. 检查合同部署仓库是否支持您将要使用的链条 。 可找到支持的链条 这里。如果链条没有支持,请进入步骤2-4,否则可以跳过步骤5.
  2. 合同部署的导航 这里 并本地复制仓库.
  3. 在合同部署内重播,编辑其中的环境特定文件 axelar-chains-config/info 要添加您将要测试的链条的文件夹 。 需要提供以下数值:
{
    "chains": {
        "example": {
            "name": "Example",
            "axelarId": "example",
            "chainId": 123,
            "rpc": "PROVIDER_RPC",
            "tokenSymbol": "EXM",
            "gasOptions": {
                "gasLimit": 8000000
            },
            "confirmations": 1
        }
    }
}

gasLimit 超接会跳过汽车气体估计(对于某些txs,在某些链条上可能不可靠). confirmations 表示等待的块确认数. axelarId 是Axelar上用来引用链条的唯一标识.

  1. 回到原点 axelar-cgp-solidity 仓库。 之后,在这个寄存器的根目录中,导航到 hardhat.config.js 文件并修改链导入行如下:
const chains = require(`/path/to/axelar-contract-deployments/axelar-chains-config/info/${env}.json`);
  1. 创建一个 keys.json 包含用于测试的账户私钥的文件。 一些测试,例如: AxelarGateway 测试,您至少需要提供 两个私钥 (你可以参考 测试 (d) 寻找所需账户的数目。 此时此刻 keys.json 文件应该与下面的示例文件相类似( e)chains 可留空 :
{
    "chains": {},
    "accounts": ["PRIVATE_KEY1", "PRIVATE_KEY2"]
}
  1. 保证您对应提供的私人密钥的账户在链条上有足够的气体符号 .
  2. 运行
npm ci

npx hardhat test --network example
  1. 要运行特定测试,您可以通过添加来修改测试脚本 .only 改为 describe 和(或) it 如下所示的块或 grep 特定测试名称 :
describe.only();
it.only();

应该检查两个基本测试组的EVM兼容链:

npx hardhat test --network example --grep 'AxelarGateway'
npx hardhat test --network example --grep 'RpcCompatibility'

调试步骤

  • 明确通过 getGasOptions() 使用 utils.js 文件进行一些小交易。 参见以下代码
await sourceChainGateway
    .execute(
        await getSignedWeightedExecuteInput(await getTokenDeployData(false), [operatorWallet], [1], 1, [operatorWallet]),
        getGasOptions()
    )
    .then((tx) => tx.wait(network.config.confirmations));
  • 使用最新的和快的rpc可以帮助测试执行运行时间. 确保不超过 rpc 的利率限制 .

  • 确保用于广播交易的账户有足够的本土余额。 最大值 gasLimit 对于链条,应该从探索者取出并将其设置在配置文件中。 您可能需要更新 confirmations 将交易成功包含在配置中的块中 这里 取决于网络.

  • 请注意,某些测试可能需要多达3个账户.

  • 如果以前的交易没有被查封,并且被查封,交易就可能失败,因此在广播后等待交易被查封。 参见以下代码

await testToken.mint(userWallet.address, 1e9).then((tx) => tx.wait(network.config.confirmations));

// Or

const txExecute = await interchainGovernance.execute(commandIdGateway, governanceChain, governanceAddress, payload, getGasOptions());
const receiptExecute = await txExecute.wait(network.config.confirmations);

示例流量

见Axelar 实例 具体的例子.

调试

  1. 设置: 托肯的包裹版本 A 已部署(AxelarGateway.deployToken()(中文(简体) ) 每个非本地EVM链作为 ERC-20 令牌(BurnableMintableCappedERC20.sol) (中文(简体) ).
  2. 鉴于目的地链和地址,Axelar网络生成一个存款地址(地址: DepositHandler.sol 已经部署, BurnableMintableCappedERC20.depositAddress())在源EVM链上.
  3. 用户发送其代号 A 在那个地址,押金合同把信使锁入网关(或烧为包裹信使).
  4. Axelar 网络验证器确认押金 Transfer 使用源链的 RPC 节点( 使用多数表决).
  5. Axelar网络准备一个薄荷命令 验证器在上面签名.
  6. 现在通过任何外部中继器向目的地链上的网关合同提交已签名的命令 AxelarGateway.execute()。 。 。 .
  7. 网关合同认证命令,以及 mint'是所包裹的托肯的指定数量' A 到目的地地址.

跨链智能合同呼叫

  1. 设置 :
    1. 目标合同执行 IAxelarExecutable.sol 接口以接收消息.
    2. 如果发送了信号,源合同需要调用 ERC20.approve() 事先允许网关合同 以转移指定的 amount 代表发件人/来源合同.
  2. 关于源链呼叫的智能合同 AxelarGateway.callContractWithToken() 与目的地链/地址, payload 和标志.
  3. 外部服务商店 payload 在常规数据库中,按 hash(payload)任何人都可以问.
  4. 类似上述,Axelar验证器确认 ContractCallWithToken 活动.
  5. 阿克塞尔网络准备 AxelarGateway.approveContractCallWithMint() 命令,由验证者签名.
  6. 交给目的地网关合同, 记录批准 payload hash 并发布事件 ContractCallApprovedWithMint。 。 。 .
  7. 任何外部中继器服务都会在网关合同中收听此事件,并呼叫 IAxelarExecutable.executeWithToken() 目标合同,与 payload 和其他数据作为参数.
  8. executeWithToken 核实合同召见是否确实得到 AxelarGateway.validateContractCallAndMint() 在网关合同.
  9. 作为其中的一部分,网关合同记录了目的地地址验证了批准,不允许重放.
  10. 目的地合同使用 payload 因为它自己的应用.

参考资料

网络资源 : https://docs.axelar.dev/resources (中文(简体) )

部署的合同: https://docs.axelar.dev/resources/mainnet 互联网档案馆的存檔,存档日期2013-12-21

一般信件传用 : https://docs.axelar.dev/dev/gmp 页面存档备份,存于互联网档案馆

实例 : https://app.squidrouter.com (中文(简体) )

Axelar网络的EVM模块,为网关准备命令: https://github.com/axelarnetwork/axelar-core/blob/main/x/evm/keepers/msg server.go. 互联网档案馆的存檔,存档日期2014-12-21

版本与发布记录

@axelar-network/axelar-cgp-solidity 共发布 24 个版本,首次发布于 2022/03/24;过去 12 个月发布了 1 个版本。

版本发布日期距今
6.5.0latest2026/08/122 个月前
6.4.02024/10/182 年前
6.3.12024/04/182 年前
6.3.02024/03/262 年前
6.2.12023/12/142 年前
6.2.02023/10/193 年前

关于 @axelar-network/axelar-cgp-solidity 的常见问题

@axelar-network/axelar-cgp-solidity 是什么?

EVM 阿克塞尔网络智能合同

如何安装 @axelar-network/axelar-cgp-solidity?

在项目目录运行 npm install @axelar-network/axelar-cgp-solidity,或使用 pnpm add / yarn add / bun add。

@axelar-network/axelar-cgp-solidity 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/axelar-network__axelar-cgp-solidity 是否存在。

@axelar-network/axelar-cgp-solidity 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@axelar-network/axelar-cgp-solidity 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@axelar-network/axelar-cgp-solidity 可以商用吗?

@axelar-network/axelar-cgp-solidity 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@axelar-network/axelar-cgp-solidity 的下载量有多少?

根据 npm 官方下载统计,@axelar-network/axelar-cgp-solidity 在 2026/10/08 – 2026/11/06 这 30 天内被下载 19,459 次,日均约 649 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@axelar-network/axelar-cgp-solidity 还在维护吗?

最新版本 6.5.0 发布于 2026/08/12(2 个月前);至今共发布 24 个版本,其中过去 12 个月发布了 1 个;首次发布于 2022/03/24。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。