@chainlink/ccip-tools-ts

中文文档
0.2.12发布于 2025/11/06MITTypeScriptES Module构建来源已验证近 30 天下载 3528

与 CCIP 互动的 CLI 和库

中文使用文档
文档目录12 节
  1. Typescript CLI和库与CCIP交互.
  2. 发展
  3. 区域协调机制
  4. 钱包
  5. 快速命令引用 :
  6. show (默认命令)
  7. manualExec
  8. send
  9. estimateGas
  10. 解析字节
  11. lane
  12. getSupportedTokens

行动工具

Typescript CLI和库与CCIP交互.

此工具可用于查询和交互 中华民国 已部署的合同 通过其可公开获取的数据和方法.

[大 这一工具是在麻省理工学院许可证下提供的,只是为了方便和说明目的.

发展

要运行此 repo 命令/ 测试, 请执行以下操作 :

git clone https://github.com/smartcontractkit/ccip-tools-ts
cd ccip-tools-ts
npm install
./src/index.ts --help  # tsx shebang available
# or
npm run build
./dist/ccip-tools-ts --help  # node shebang script
npx path/to/repo/ccip-tools-ts --help  # or pointing to folder directly

[注] 在下面的德文背景中,我们会呼叫 $cli="./src/index.ts"

区域协调机制

所有命令都要求为感兴趣的网络(源和去向)提供RPC的端点列表. 两者 http[s] 财务报告和审定财务报表 ws[s] (websocket) URL 支持.

此列表可在命令行中通过 -r/--rpcs 选项,并与 从 rpcs 文件中获取的 (--rpcs-file默认值=./.env)),其中可能包含多个 端点,每行一个,带有任何前缀或后缀(即来自其他工具工作的环境文件, 但环境变量名称被忽略,只使用 URL); ;.txt,.csv甚至.json 阵列应在框外工作.

清单一被收集,我们就连接所有RPC,并用最快的速度为每个网络回复.

钱包

需要发送交易的指令试图从一个 USER_KEY 环境 变量.

加密钱包json也可以传递到 --wallet 选项。 用密码解密 从 USER_KEY_PASSWORD 环境变量,或者如果未设定,则以交互方式激发.

此外, --wallet ledger (或 --wallet "ledger:<derivationPath>")可用于连接 a 编目设备,使用 @ledgerhq/hw-app-eth 图书馆。 衍生路径可以指定,或者 默认为 m/44'/60'/0'/0/0。 。 。 .

快速命令引用 :

show (默认命令)

$cli [show] <source_transaction_hash> [--log-index num]

无需指定源(网络、链路、链路选择器) 。 此命令尝试每个可用的 RPC 并使用任何响应此交易散列的网络.

如果此交易中有不止一个 CCIP 信件, 则询问用户想要哪个 要知道更多, 在屏幕上有一些基本信息。 这个 --log-index 选项允许指定 日志索引非交互式.

如果还有RPC可用, 我们扫描Contital Report中的此请求, 然后执行 收款至a success 收据或头被击中.

manualExec

$cli manualExec <source_transaction_hash> [--gas-limit num] [--tokens-gas-limit num]

尝试在源代码交易中手动执行消息 。 如果找到不止一个, 则提示用户 与 show 以上指挥.

--gas-limit 允许覆盖此信件的执行限制( 在 OffRamp 中, 而非交易 ,), (总算). --gas-limit=0 原请求中指定的默认再使用限制 .

--tokens-gas-limit 允许超过任何令牌池操作的气体限制.

--estimate-gas-limit 选项将尝试自动估计 消息执行,基于网络的当前状态. 这只针对主的 ccipReceive 执行回话。 不支持托肯斯气体限制覆盖估计 .

--sender-queue 从 并且执行所有符合条件的信息。 默认情况下, 仅待决 包括(未执行)信息. --exec-failed 包括失败的消息 。 此选项 需要一些时间,特别是对于更古老的信息,因为它需要扫描源和干网 查找信件及其执行状态.

索拉纳特殊情况

--solana-force-buffer 以强制使用一个缓冲器处理太大且无法适应单一交易的信息

--solana-force-lookup-table 为信件中使用的所有账户创建一个查询表, 以适合交易

--solana-cu-limit <compute_units> 如果默认值不够的话, 将覆盖计算单位值, 这是solana 的特殊参数, 您不能使用覆盖气体

send

$cli send 11155111 0x0BF3dE8c5D3e8A2B34D2BEeB17ABfCeBaf363A59 ethereum-testnet-sepolia-arbitrum-1 \
    --receiver 0xAB4f961939BFE6A93567cC57C59eEd7084CE2131 \
    --data 'hello world' \
    --gas-limit 300000 \
    --fee-token 0x779877A7B0D9E8603169DdbD7836e478b4624789 \
    --transfer-tokens 0xFd57b4ddBf88a4e07fF4e34C487b99af2Fe82a05=0.1

从源网络的路由器发送消息到dest;位置参数为:

  1. source: 链路或名称
  2. router: 来源地址
  3. dest: 链路或名称

若为 --receiver 中省略,发送到 dest 上的自我(发送)地址(参见 钱包 节 (见上文).

若为 --data 不是六分弦,它将被UTF-8编码.

若为 --gas-limit 省略,则使用坡道默认配置(通常为200k)。 可能是这样 0。 。 。 . --estimate-gas-limit 也可以提供,以估计消息执行的气体限制. 它得到一个百分率(例如:. --estimate-gas-limit 10 10%的比值),加到 发送消息前的估计.

若为 --fee-token 省略,CCIP收费将以当地代币支付.

--transfer-tokens 可接收多对 0xTokenAddr=amount (源代码地址, 以空格分隔,终止于 -- (如果需要的话). amount 将使用符号转换 十进制(如:USDC最小单位的0.1 = 10^5,为6个十进制).

--allow-out-of-order-exec 仅可在v1.5+道上使用,并选择退出 发送者 nonce 顺序 执行。 对于无法保证执行的目的地(例如:zkOverflow)来说是有用的.

estimateGas

$cli estimateGas 11155111 0x0BF3dE8c5D3e8A2B34D2BEeB17ABfCeBaf363A59 ethereum-testnet-sepolia-arbitrum-1 \
    --receiver 0xAB4f961939BFE6A93567cC57C59eEd7084CE2131 \
    --sender 0xEC1062cbDf4fBf31B3A6Aac62B6F6F123bb70E12 \
    --transfer-tokens 0xFd57b4ddBf88a4e07fF4e34C487b99af2Fe82a05=0.1

估计消息的气体,与 send 命令,但不发送,只是打印 最低 gasLimit 执行是成功的.

解析字节

$cli parseBytes 0xbf16aab6000000000000000000000000779877a7b0d9e8603169ddbd7836e478b4624789

Error: EVM2EVMOnRamp_1.2.0.UnsupportedToken(address)
Args: { token: '0x779877A7B0D9E8603169DdbD7836e478b4624789' }

试图解析六进制函数 调用数据,错误和还原原因, 因为我们已知的合同.

若为 --selector <sel> ,它接收错误、函数或事件名称,4字节用于 错误或函数选择器, 或事件32字节 object/topicHash, 它会尝试解码为 特定碎片。 为了解码事件,需要这样做 data 解析为非索引 只有事件参数.

若为 --selector 未提供,前4字节将作为错误或函数选择器使用,以及 其余为 data。 。 。 .

它会不断解码 returnData 财务报告和审定财务报表 error 参数.

lane

$cli lane lane ethereum-mainnet 0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D avalanche-mainnet

打印道、 OnRamp 和 offRamp 配置用于指定道.

如果省略了第3个参数,第2个参数(地址)应为OnRamp地址.

另外,在出现一些误差时进行一些验证和警告,例如,OnRamp不是 在路由器中注册.

getSupportedTokens

$cli getSupportedTokens <source> <router> <dest>

发现并验证了可以使用CCIP在链条之间转移的符. 该指挥部对跨链符号支持进行全面分析.

参数

  • source:源链ID或名称(例如, ethereum-mainnet, (中文(简体) ), 1(中文(简体) )
  • router页:1 源链上的路由器合同地址
  • dest:目标链ID或名称(例如, polygon-mainnet, (中文(简体) ), 137(中文(简体) )

特征

  • 自动集合版本检测
  • 自定义集合支持, 并返回到最新的 ABI
  • 速率限制配置验证
  • 与可配置批量大小平行处理
  • 综合错误收集

示例

# Check tokens supported for transfer from Ethereum to Polygon
$cli --format pretty getSupportedTokens ethereum-mainnet 0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D polygon-mainnet

输出格式选项

  • --format pretty (默认):人可读输出
  • --format log: 基本控制台记录
  • --format json机器可读 JSON

版本与发布记录

@chainlink/ccip-tools-ts 共发布 18 个版本,首次发布于 2024/10/31;过去 12 个月发布了 0 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.12latest2025/11/061 年前
0.2.112025/09/191.1 年前
0.2.102025/09/101.2 年前
0.2.92025/08/211.2 年前
0.2.82025/07/171.3 年前
0.2.72025/05/301.4 年前

关于 @chainlink/ccip-tools-ts 的常见问题

@chainlink/ccip-tools-ts 是什么?

与 CCIP 互动的 CLI 和库

如何安装 @chainlink/ccip-tools-ts?

在项目目录运行 npm install @chainlink/ccip-tools-ts,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 ccip-tools-ts,可以用 npx ccip-tools-ts 直接运行。

@chainlink/ccip-tools-ts 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@chainlink/ccip-tools-ts 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@chainlink/ccip-tools-ts 可以商用吗?

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

@chainlink/ccip-tools-ts 的下载量有多少?

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

@chainlink/ccip-tools-ts 还在维护吗?

最新版本 0.2.12 发布于 2025/11/06(1 年前);至今共发布 18 个版本,其中过去 12 个月发布了 0 个;首次发布于 2024/10/31。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。