行动工具
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;位置参数为:
source: 链路或名称router: 来源地址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