@zan_team/cli 0.0.5 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +255 -21
- package/dist/cli.js +4177 -929
- package/package.json +8 -1
- package/skills/zan-cli/SKILL.md +6 -2
- package/skills/zan-cli/references/rpc-workflow.md +15 -0
- package/skills/zan-cli/references/signing.md +16 -0
- package/skills/zan-cli/references/solana-transactions.md +92 -0
- package/skills/zan-cli/references/troubleshooting.md +6 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ZAN CLI
|
|
2
2
|
|
|
3
|
-
ZAN CLI 是面向开发者、自动化脚本和 AI Agent 的统一命令行入口,提供安全认证、ZAN Project
|
|
3
|
+
ZAN CLI 是面向开发者、自动化脚本和 AI Agent 的统一命令行入口,提供安全认证、ZAN Project 管理与套餐用量查询、EVM / Solana / Hyperliquid 查询、助记词与钱包管理、本地签名、Solana 交易与 Trading Boost 加速,以及稳定的机器可读输出。
|
|
4
4
|
|
|
5
5
|
## 快速开始
|
|
6
6
|
|
|
@@ -9,6 +9,8 @@ ZAN CLI 是面向开发者、自动化脚本和 AI Agent 的统一命令行入
|
|
|
9
9
|
- Node.js 22 或更高版本。
|
|
10
10
|
- 可用的系统凭据库:macOS Keychain、Windows Credential Manager 或 Linux Secret Service。
|
|
11
11
|
|
|
12
|
+
macOS / Windows 需要安装 CLI 的可选原生凭据库依赖,安装时请保留 optional dependencies。通过命令行子进程传递秘密的备用凭据库实现已禁用;Linux 支持原生或通过 stdin 传入秘密的 Secret Service 实现。
|
|
13
|
+
|
|
12
14
|
### 安装
|
|
13
15
|
|
|
14
16
|
使用 npm 全局安装:
|
|
@@ -19,6 +21,7 @@ zan --help
|
|
|
19
21
|
```
|
|
20
22
|
|
|
21
23
|
CLI 默认连接 ZAN 服务,无需配置服务地址。
|
|
24
|
+
下文命令中的 `<project-id>`、`<solana-address>` 等是占位符,执行前请替换为实际值并去掉尖括号。
|
|
22
25
|
|
|
23
26
|
### 登录
|
|
24
27
|
|
|
@@ -68,7 +71,14 @@ zan settings set network <network-id>
|
|
|
68
71
|
zan settings show
|
|
69
72
|
```
|
|
70
73
|
|
|
71
|
-
将 `<network-id>` 替换为 `evm networks` 返回的 Network ID
|
|
74
|
+
将 `<network-id>` 替换为 `evm networks` 返回的 Network ID。使用 Solana 时:
|
|
75
|
+
|
|
76
|
+
```sh
|
|
77
|
+
zan solana networks
|
|
78
|
+
zan settings set network solana-testnet
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Solana 支持 `solana-testnet` 和 `solana-mainnet`。EVM 与 Solana 的默认 Network 分开保存。
|
|
72
82
|
|
|
73
83
|
### 第一次查询
|
|
74
84
|
|
|
@@ -84,6 +94,15 @@ zan evm data balance 0x0000000000000000000000000000000000000000
|
|
|
84
94
|
zan evm rpc eth_blockNumber
|
|
85
95
|
```
|
|
86
96
|
|
|
97
|
+
Solana 查询示例:
|
|
98
|
+
|
|
99
|
+
```sh
|
|
100
|
+
zan solana rpc getSlot
|
|
101
|
+
zan solana data balance <solana-address>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
余额查询无需导入钱包。导入助记词、转账及加速的完整流程见[钱包与签名](#钱包与签名)和[Solana 交易与加速](#solana-交易与加速)。
|
|
105
|
+
|
|
87
106
|
### 脚本和 AI Agent
|
|
88
107
|
|
|
89
108
|
自动化调用应显式关闭交互并使用 JSON 输出:
|
|
@@ -97,7 +116,7 @@ zan \
|
|
|
97
116
|
evm rpc eth_blockNumber
|
|
98
117
|
```
|
|
99
118
|
|
|
100
|
-
成功结果写入 stdout,失败结果写入 stderr
|
|
119
|
+
成功结果写入 stdout,失败结果写入 stderr。Solana 交易提交遇到失败或结果不确定时,还会在 stdout 保留交易结果;脚本应同时检查退出码,见[自动化与 JSON 输出](#自动化与-json-输出)。
|
|
101
120
|
|
|
102
121
|
## 完整使用指南
|
|
103
122
|
|
|
@@ -244,8 +263,13 @@ JSON 直接返回 `{ project, keyUsage, plan }`,额度字段为十进制整数
|
|
|
244
263
|
zan evm networks
|
|
245
264
|
zan evm networks --search base
|
|
246
265
|
zan evm networks --refresh
|
|
266
|
+
zan solana networks
|
|
267
|
+
zan solana networks --search testnet
|
|
247
268
|
```
|
|
248
269
|
|
|
270
|
+
Solana 查询、交易与加速使用当前 Project 的 RPC Key;配置了 Key 覆盖值时使用该覆盖值。
|
|
271
|
+
无需另建 Solana Project 或导出 Key 才能使用 CLI。
|
|
272
|
+
|
|
249
273
|
网络列表中的币种显示为 `-` 时,仍可使用 `evm rpc` 查询。
|
|
250
274
|
`evm data balance` 需要币种信息;信息缺失时可用 `evm rpc eth_getBalance`
|
|
251
275
|
查询以最小单位表示的余额。
|
|
@@ -295,13 +319,19 @@ zan project rpc-key clear
|
|
|
295
319
|
```sh
|
|
296
320
|
zan settings get project
|
|
297
321
|
zan settings get network
|
|
322
|
+
zan settings get solanaNetwork
|
|
298
323
|
zan settings show
|
|
299
324
|
zan settings set project <project-id>
|
|
300
325
|
zan settings set network <network-id>
|
|
301
326
|
zan settings clear network
|
|
327
|
+
zan settings clear solanaNetwork
|
|
302
328
|
zan settings clear
|
|
303
329
|
```
|
|
304
330
|
|
|
331
|
+
`network` 表示 EVM 默认 Network,`solanaNetwork` 表示 Solana 默认 Network。
|
|
332
|
+
`settings set network solana-testnet` 会自动更新 Solana 默认值;设置 EVM Network 不会覆盖它。
|
|
333
|
+
显式传入的 `--network` 或 `ZAN_NETWORK` 必须与命令所属链匹配。
|
|
334
|
+
|
|
305
335
|
Project 和 Network 的选择优先级:
|
|
306
336
|
|
|
307
337
|
```text
|
|
@@ -364,7 +394,7 @@ printf '["0x0000000000000000000000000000000000000000","latest"]' \
|
|
|
364
394
|
|
|
365
395
|
该文件位于当前用户的主目录,对所有项目生效;`ZAN_HOME` 不改变此路径。
|
|
366
396
|
|
|
367
|
-
YAML schema
|
|
397
|
+
YAML schema 支持三个顶层属性,分别控制 EVM Raw JSON-RPC、Hyperliquid Info 和 Solana Raw JSON-RPC 方法:
|
|
368
398
|
|
|
369
399
|
```yaml
|
|
370
400
|
allowedRpcMethods:
|
|
@@ -377,13 +407,18 @@ allowedHyperliquidInfoMethods:
|
|
|
377
407
|
- meta
|
|
378
408
|
- activeAssetData
|
|
379
409
|
- userFills
|
|
410
|
+
allowedSolanaRpcMethods:
|
|
411
|
+
- getSlot
|
|
412
|
+
- getBalance
|
|
413
|
+
- getAccountInfo
|
|
414
|
+
- getTransaction
|
|
380
415
|
```
|
|
381
416
|
|
|
382
|
-
条目是精确且大小写敏感的方法名(1–128 字符,匹配 `^[A-Za-z][A-Za-z0-9_.-]*$`),不允许重复,最多 256
|
|
417
|
+
条目是精确且大小写敏感的方法名(1–128 字符,匹配 `^[A-Za-z][A-Za-z0-9_.-]*$`),不允许重复,最多 256 条。不支持通配、前缀或正则。空列表会拒绝对应类别的所有 Raw 方法。文件必须是单个 YAML 文档且不超过 64 KiB;注释允许,重复键、别名、自定义标签和合并键会被拒绝。
|
|
383
418
|
|
|
384
|
-
首次调用 `zan evm rpc` 或 `zan
|
|
419
|
+
首次调用 `zan evm rpc`、`zan hyperliquid info` 或 `zan solana rpc` 时,若配置文件不存在,CLI 会创建默认查询方法列表。已有文件不会被升级覆盖;修改后在下一次调用生效。
|
|
385
420
|
|
|
386
|
-
|
|
421
|
+
旧版本配置继续兼容:缺少 `allowedHyperliquidInfoMethods` 或 `allowedSolanaRpcMethods` 时,对应命令使用默认允许列表,不会自动改写用户文件。可显式加入对应属性限制方法;空列表拒绝该类 Raw 调用。已有配置不会自动补入新增加的 `hl_*` JSON-RPC 方法,需要使用时请手动加入 `allowedRpcMethods`。
|
|
387
422
|
|
|
388
423
|
允许列表不保证所选 Network 或套餐支持某个方法;RPC 错误仍然是最终依据。诊断和跟踪类读取可能消耗更多额度。
|
|
389
424
|
|
|
@@ -469,23 +504,97 @@ zan evm logs \
|
|
|
469
504
|
|
|
470
505
|
当前版本返回原始日志,不执行 ABI 解码或分页。
|
|
471
506
|
|
|
507
|
+
### Solana 查询
|
|
508
|
+
|
|
509
|
+
登录并选择 Project 后,设置 Solana Network:
|
|
510
|
+
|
|
511
|
+
```sh
|
|
512
|
+
zan settings set network solana-testnet
|
|
513
|
+
zan inspect --family solana
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
常用查询无需本地钱包:
|
|
517
|
+
|
|
518
|
+
```sh
|
|
519
|
+
zan solana data balance <solana-address>
|
|
520
|
+
zan solana data tokens <owner-address>
|
|
521
|
+
zan solana account <solana-address>
|
|
522
|
+
zan solana tx <transaction-signature>
|
|
523
|
+
zan solana tx status <transaction-signature>
|
|
524
|
+
zan solana block <slot>
|
|
525
|
+
zan solana fees
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
`data tokens` 同时查询 SPL Token 和 Token-2022 账户。余额中的 lamports 和代币原始数量使用精确十进制字符串,避免大整数精度丢失。`fees` 返回近期优先费采样,单位为 micro-lamports / CU,不能直接当作整笔交易费用。
|
|
529
|
+
|
|
530
|
+
余额、代币和账户查询支持 `--commitment processed|confirmed|finalized`,默认 `confirmed`;交易和区块查询支持 `confirmed|finalized`。
|
|
531
|
+
|
|
532
|
+
Raw JSON-RPC 的位置参数同样必须是合法 JSON:
|
|
533
|
+
|
|
534
|
+
```sh
|
|
535
|
+
zan solana rpc getSlot
|
|
536
|
+
zan solana rpc getBalance '"<solana-address>"' '{"commitment":"confirmed"}'
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
也可通过 `--stdin` 读取一个 JSON 参数数组,不能同时传位置参数。
|
|
540
|
+
`allowedSolanaRpcMethods` 控制 Raw 查询;即使加入允许列表,`sendTransaction`、`requestAirdrop` 和 `simulateTransaction` 仍不能通过 `solana rpc` 执行。交易模拟使用 `solana tx simulate`,提交使用下面的交易命令。内置查询命令使用固定只读方法,不受允许列表影响。
|
|
541
|
+
|
|
472
542
|
### 钱包与签名
|
|
473
543
|
|
|
474
|
-
|
|
544
|
+
钱包操作在本地完成,无需登录或选择 Project / Network。交互提示使用英文,秘密通过终端隐藏输入,保存在系统凭据库中。
|
|
545
|
+
|
|
546
|
+
#### 导入助记词与派生账户
|
|
547
|
+
|
|
548
|
+
导入 BIP39 助记词无需指定链,同一来源可派生 EVM 和 Solana 账户:
|
|
475
549
|
|
|
476
550
|
```sh
|
|
477
|
-
zan settings wallet add
|
|
551
|
+
zan settings wallet add main --mnemonic
|
|
478
552
|
zan settings wallet list
|
|
479
|
-
zan settings wallet use
|
|
553
|
+
zan settings wallet use main
|
|
480
554
|
```
|
|
481
555
|
|
|
482
|
-
|
|
556
|
+
在隐藏输入提示中一次性输入完整助记词,所有单词放在同一行,单词之间用空格分隔,全部输入完成后按 Enter。使用 `--mnemonic --stdin` 时也使用同样的单行格式。
|
|
557
|
+
CLI 检查单词数量(12、15、18、21 或 24)、BIP39 词表和校验和。交互输入无效时显示英文错误原因并让用户重新输入,可按 Ctrl+C 取消;stdin 输入无效时返回错误,不进入交互重试。错误不会回显助记词。
|
|
558
|
+
默认导入第一个账户(Account 1,index 0),不显示账户选择。CLI 会预览两条链的公开地址和派生路径,确认后保存助记词;后续需要新增账户时使用 `wallet derive`。
|
|
559
|
+
如原钱包使用了 BIP39 passphrase,导入时增加 `--passphrase-prompt`,在隐藏提示中输入。
|
|
560
|
+
|
|
561
|
+
从已保存助记词添加第二个账户:
|
|
562
|
+
|
|
563
|
+
```sh
|
|
564
|
+
zan settings wallet derive main --index 1 --alias trading
|
|
565
|
+
zan settings wallet use trading --chain solana
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
`--index` 从 0 开始,`1` 表示 Account 2。默认派生路径为 EVM 的 `m/44'/60'/0'/0/<index>` 和 Solana 的 `m/44'/501'/<index>'/0'`。
|
|
569
|
+
已有钱包地址使用其他路径时,可通过 `--evm-path` / `--solana-path` 指定;自定义路径不能与 `--index` 同用,Solana 路径每一级须使用带 `'` 的加固派生。导入后请核对地址与原钱包一致。
|
|
570
|
+
|
|
571
|
+
`wallet use <alias>` 为别名包含的链设置默认账户,`--chain solana` 或 `--chain evm` 只修改一条链。默认账户分别保存。
|
|
572
|
+
|
|
573
|
+
#### 导入单链私钥
|
|
574
|
+
|
|
575
|
+
也可运行 `zan settings wallet add <alias>`,按英文提示选择导入方式,或显式指定:
|
|
576
|
+
|
|
577
|
+
```sh
|
|
578
|
+
zan settings wallet add evm-wallet --chain evm
|
|
579
|
+
zan settings wallet add solana-wallet --chain solana
|
|
580
|
+
zan settings wallet add solana-file --keypair-file /path/to/keypair.json
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
Solana 私钥支持 Base58 编码的 64 字节 secret key,或包含 64 个字节整数的 JSON keypair 文件。
|
|
584
|
+
`--stdin` 从标准输入读取秘密;使用 `--stdin` 时省略 `--mnemonic` 和 `--chain` 会沿用 EVM 私钥格式。不要将真实助记词、passphrase 或私钥放入命令参数、聊天或日志。
|
|
585
|
+
|
|
586
|
+
#### 消息与 EVM 交易签名
|
|
587
|
+
|
|
588
|
+
使用默认账户或指定别名签署消息:
|
|
483
589
|
|
|
484
590
|
```sh
|
|
485
591
|
zan sign "Hello ZAN"
|
|
486
|
-
zan sign "Hello ZAN" --account
|
|
592
|
+
zan sign "Hello ZAN" --account main
|
|
593
|
+
zan solana sign "Hello ZAN" --account main
|
|
487
594
|
```
|
|
488
595
|
|
|
596
|
+
`zan sign` 使用 EVM EIP-191,`zan solana sign` 使用 Solana Ed25519。消息默认按 UTF-8 编码;`--hex` 按十六进制字节解释。消息签名无需网络连接,也不会广播交易。
|
|
597
|
+
|
|
489
598
|
签署交易前需选择 Project 和 Network。以下命令仅生成已签名交易,不广播:
|
|
490
599
|
|
|
491
600
|
```sh
|
|
@@ -506,9 +615,122 @@ zan evm contract encode --method 'balanceOf(address)' \
|
|
|
506
615
|
删除已保存的钱包:
|
|
507
616
|
|
|
508
617
|
```sh
|
|
509
|
-
zan settings wallet remove
|
|
618
|
+
zan settings wallet remove trading
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
删除一个派生账户不会删除其他账户仍引用的助记词来源。
|
|
622
|
+
|
|
623
|
+
### Solana 交易与加速
|
|
624
|
+
|
|
625
|
+
#### SOL 转账
|
|
626
|
+
|
|
627
|
+
先导入钱包、登录并选择 Project,再在测试网尝试转账。发送方需要测试网 SOL 支付金额和网络费用:
|
|
628
|
+
|
|
629
|
+
```sh
|
|
630
|
+
zan --network solana-testnet solana transfer \
|
|
631
|
+
--to <recipient-address> --amount 0.01 --account main --wait
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
CLI 准备交易、模拟并预览收款方、金额、指令和费用,确认后才本地签名并提交。取消确认不会签名或发送。
|
|
635
|
+
金额使用 SOL 十进制表示,最多 9 位小数,不接受科学计数法。
|
|
636
|
+
默认使用普通 RPC;加速需要显式选择付费模式。
|
|
637
|
+
|
|
638
|
+
`--wait` 等待 `confirmed`,可用 `--commitment finalized` 等待最终确认;不加 `--wait` 时提交后返回。
|
|
639
|
+
`--wait-timeout <ms>` 控制总等待时间,默认 60000;全局 `--timeout` 控制单次请求超时。
|
|
640
|
+
默认执行模拟和 RPC preflight,`--skip-preflight` 显式跳过两者。
|
|
641
|
+
|
|
642
|
+
#### 通用交易:构建、检查、模拟、签名和提交
|
|
643
|
+
|
|
644
|
+
选择目标 Solana Network 后,可从指令文件构建交易,或使用外部生成的 Base64 交易文件:
|
|
645
|
+
|
|
646
|
+
```sh
|
|
647
|
+
zan settings set network solana-testnet
|
|
648
|
+
zan solana tx build --instructions-file instructions.json --account main --out unsigned.base64
|
|
649
|
+
zan solana tx inspect --file unsigned.base64
|
|
650
|
+
zan solana tx inspect --file unsigned.base64 --online
|
|
651
|
+
zan solana tx simulate --file unsigned.base64
|
|
652
|
+
zan solana tx sign --file unsigned.base64 --account main --out signed.base64
|
|
653
|
+
zan solana tx send --file signed.base64 --wait
|
|
654
|
+
```
|
|
655
|
+
|
|
656
|
+
`instructions.json` 的格式如下;将占位符替换为程序文档或 SDK 生成的地址与指令数据:
|
|
657
|
+
|
|
658
|
+
```json
|
|
659
|
+
{
|
|
660
|
+
"version": 0,
|
|
661
|
+
"instructions": [
|
|
662
|
+
{
|
|
663
|
+
"programAddress": "<program-address>",
|
|
664
|
+
"accounts": [
|
|
665
|
+
{ "address": "<account-address>", "isSigner": false, "isWritable": true }
|
|
666
|
+
],
|
|
667
|
+
"dataBase64": "<canonical-base64>"
|
|
668
|
+
}
|
|
669
|
+
],
|
|
670
|
+
"lookupTableAddresses": []
|
|
671
|
+
}
|
|
672
|
+
```
|
|
673
|
+
|
|
674
|
+
支持 `"legacy"` 和 `0` 两种版本;地址查找表使用 v0。CLI 不内置 SPL 转账、Swap 或 Anchor 指令编码,应使用对应程序的 SDK 生成数据。
|
|
675
|
+
构建时也可用 `--payer <address>` 替代 `--account`,无需本地钱包。
|
|
676
|
+
|
|
677
|
+
基本检查和 `tx sign` 离线完成,无需登录或 RPC。使用地址查找表时,`inspect --online` 可解析完整账户;离线检查可能不完整。
|
|
678
|
+
签名只添加当前账户的签名,保留原消息、已有签名和 blockhash;多签交易需逐个签署必需账户。
|
|
679
|
+
`tx send` 要求全部签名有效,可提交外部已签名交易,无需本地钱包。
|
|
680
|
+
模拟成功仅表示本次模拟通过。已有签名在本地校验,结果标记 `signatureVerificationScope: local`;未签名或部分签名交易会标记未完成全部签名验证。发送给 RPC 的模拟副本会清除全部签名,保留原消息,原交易文件保持不变,避免模拟时披露可广播的交易。
|
|
681
|
+
|
|
682
|
+
生成的 Base64 文件附带公开的 `<file>.metadata.json`,记录关联网络和交易有效期信息;移动文件时请一起保留。输出文件已存在时不会覆盖。
|
|
683
|
+
外部交易文件不会被自动改写、补指令或刷新 blockhash。
|
|
684
|
+
|
|
685
|
+
#### Trading Boost:Tips 与 Points
|
|
686
|
+
|
|
687
|
+
加速仅支持 `solana-mainnet`。先查看当前 Project 和 Network 的能力说明:
|
|
688
|
+
|
|
689
|
+
```sh
|
|
690
|
+
zan --network solana-mainnet solana boost status
|
|
691
|
+
```
|
|
692
|
+
|
|
693
|
+
| 模式 | 选择参数 | 额外费用 |
|
|
694
|
+
| --- | --- | --- |
|
|
695
|
+
| 普通 RPC(默认) | `--boost rpc` 或省略 | 无加速费用,仍支付网络费用 |
|
|
696
|
+
| Tips | `--boost tips --tip-sol 0.0003` | 钱包支付 SOL tip,最低及默认值为 0.0003 SOL |
|
|
697
|
+
| Points | `--boost points --tier standard\|turbo\|prime` | 每次提交对应 1 / 3 / 5 Points,仍支付网络费用 |
|
|
698
|
+
|
|
699
|
+
选择一种模式发送:
|
|
700
|
+
|
|
701
|
+
```sh
|
|
702
|
+
# Tips
|
|
703
|
+
zan --network solana-mainnet solana transfer \
|
|
704
|
+
--to <recipient-address> --amount 0.01 --account main \
|
|
705
|
+
--boost tips --tip-sol 0.0003 --region sg --wait
|
|
706
|
+
|
|
707
|
+
# Points
|
|
708
|
+
zan --network solana-mainnet solana transfer \
|
|
709
|
+
--to <recipient-address> --amount 0.01 --account main \
|
|
710
|
+
--boost points --tier turbo --wait
|
|
510
711
|
```
|
|
511
712
|
|
|
713
|
+
Tips 的区域可选 `sg`(默认)、`global`、`hk`、`de`、`us`;Points 使用 `global` 路由。
|
|
714
|
+
Points 未指定 tier 时,交互模式提示选择;非交互模式必须显式指定。
|
|
715
|
+
当前 CLI 不提供 Points 余额、过期时间和权限的确定查询,`boost status` 中的 unknown / unavailable 不表示余额为零,实际权限和额度由服务校验。
|
|
716
|
+
|
|
717
|
+
已有交易也可通过 `tx send --boost points --tier turbo` 提交。
|
|
718
|
+
使用 Tips 时须在签名前准备 tip,例如 `tx build --boost tips`;外部已签名交易必须已包含足额 tip,否则拒绝发送。Points 不会删除交易中已有的 SOL tip。
|
|
719
|
+
`--anti-mev` 可在构建或转账签名前加入保护账户;外部已签名交易须预先包含该账户才能使用此选项。
|
|
720
|
+
模拟、费用查询和确认查询仍使用普通 RPC。付费提交不保证加速或 Anti-MEV 效果,链上确认也不代表已取得加速回执。
|
|
721
|
+
|
|
722
|
+
#### 交易结果与恢复
|
|
723
|
+
|
|
724
|
+
结果区分 `submitted`、`confirmed`、`finalized`、`failed`、`expired`、`unknown`。
|
|
725
|
+
等待超时或网络中断时,按结果中的 `recoveryCommand` 查询;它固定本次 Project、Network 和签名:
|
|
726
|
+
|
|
727
|
+
```sh
|
|
728
|
+
zan --project <project-id> --network <original-network-id> solana tx status <transaction-signature>
|
|
729
|
+
```
|
|
730
|
+
|
|
731
|
+
示例中的网络应与原交易一致。`unknown` 表示执行结果尚未确定,不能据此重新转账;历史查询暂未找到也不能证明未执行。
|
|
732
|
+
CLI 不会自动重签、切换加速模式或发送替代交易。确认期间第一次 Ctrl+C 会保留已知签名和结果,退出码仍为 130。
|
|
733
|
+
|
|
512
734
|
### 自动化与 JSON 输出
|
|
513
735
|
|
|
514
736
|
推荐的自动化调用形式:
|
|
@@ -525,9 +747,19 @@ zan --json --no-interactive --project <project-id> usage
|
|
|
525
747
|
|
|
526
748
|
- 成功时,stdout 只包含一个完整 JSON 值;部分命令可能同时向 stderr 输出风险警告。
|
|
527
749
|
- 失败时,stderr 只包含一个完整 JSON 错误。
|
|
750
|
+
- Solana 交易提交返回 `failed` / `expired` / `unknown` 时,stdout 还保留交易结果和恢复命令。前两者退出码为 7,`unknown` 为 6 且不可自动重试;不要仅凭 stdout 有结果判断成功。
|
|
528
751
|
- JSON 模式不输出进度提示。
|
|
529
752
|
- 非交互模式不读取交互输入、不打开浏览器。
|
|
530
|
-
- 显式的 `evm rpc --stdin` 仍会读取作为命令数据的 stdin。
|
|
753
|
+
- 显式的 `evm rpc --stdin`、`solana rpc --stdin` 和钱包导入 `--stdin` 仍会读取作为命令数据的 stdin。
|
|
754
|
+
|
|
755
|
+
自动化提交 Solana 交易必须使用 `--yes` 明确授权本次广播。例如,已确认网络、收款方、金额和账户后:
|
|
756
|
+
|
|
757
|
+
```sh
|
|
758
|
+
zan --json --no-interactive --project <project-id> --network solana-testnet \
|
|
759
|
+
solana transfer --to <recipient-address> --amount 0.01 --account main --yes --wait
|
|
760
|
+
```
|
|
761
|
+
|
|
762
|
+
签名授权不等于广播授权。Agent 应在用户授权的范围内使用 `--yes`;Points 模式还必须指定 `--tier`。
|
|
531
763
|
|
|
532
764
|
错误示例:
|
|
533
765
|
|
|
@@ -549,6 +781,7 @@ zan --json --no-interactive --project <project-id> usage
|
|
|
549
781
|
```sh
|
|
550
782
|
zan inspect
|
|
551
783
|
zan --json --no-interactive inspect
|
|
784
|
+
zan inspect --family solana
|
|
552
785
|
```
|
|
553
786
|
|
|
554
787
|
获取 Agent 可读取的命令说明:
|
|
@@ -560,11 +793,12 @@ zan --json --no-interactive agent manifest
|
|
|
560
793
|
|
|
561
794
|
Agent 可用 `inspect` 检查本地状态;`ready: false` 需结合实际命令判断。
|
|
562
795
|
例如缺少 Network 不影响已登录且已选择 Project 的 `usage` 查询。
|
|
796
|
+
`inspect --family solana` 检查 Solana 的就绪状态;余额查询无需钱包,本地消息签名和离线交易签名无需登录或 Network。
|
|
563
797
|
|
|
564
798
|
### Agent Skill
|
|
565
799
|
|
|
566
800
|
CLI 随附 zan-cli Skill,包含命令使用说明、
|
|
567
|
-
Project/Network 选择、套餐与 Key 用量、EVM/Hyperliquid 查询、RPC Key
|
|
801
|
+
Project/Network 选择、套餐与 Key 用量、EVM / Solana / Hyperliquid 查询、RPC Key 拉取、助记词派生、钱包签名及 Solana 交易与 Trading Boost 指引。
|
|
568
802
|
安装 CLI 后,使用以下命令将 Skill 安装到 Agent 可发现的位置。
|
|
569
803
|
|
|
570
804
|
选择 Agent 和安装范围:
|
|
@@ -632,22 +866,22 @@ zan completions fish
|
|
|
632
866
|
| `3` | 认证、凭据库或必要设置缺失 |
|
|
633
867
|
| `4` | Project、Network、ENS 名称或查询资源不存在 |
|
|
634
868
|
| `5` | 限流 |
|
|
635
|
-
| `6` |
|
|
636
|
-
| `7` | JSON-RPC
|
|
869
|
+
| `6` | 网络错误或 Solana 提交结果不确定 |
|
|
870
|
+
| `7` | JSON-RPC 错误或 Solana 交易失败、过期 |
|
|
637
871
|
| `8` | ZAN CLI API 错误 |
|
|
638
872
|
| `130` | 用户中断 |
|
|
639
873
|
|
|
640
|
-
|
|
874
|
+
读取请求遇到限流、临时网络错误或服务端明确标记的临时错误时,可结合 `retryable` 重试。参数错误、认证拒绝和资源不存在不应自动重试。Solana 提交结果不确定时先查询原签名,不自动重试广播或重新支付。
|
|
641
875
|
|
|
642
876
|
创建 Project 时若提示名称重复,可更换名称,或执行 `zan project list` 查找已有项目。
|
|
643
877
|
套餐不可用或项目数量达到上限时,请根据错误提示检查账号套餐及项目状态。
|
|
644
878
|
|
|
645
879
|
### 安全注意事项
|
|
646
880
|
|
|
647
|
-
-
|
|
881
|
+
- 不要在聊天、问题反馈、日志或版本控制中包含助记词、passphrase、私钥、API Key、登录凭据及含凭据的 RPC 地址。
|
|
648
882
|
- 仅在应用直接调用 ZAN API 时使用 `project rpc-key pull`,并妥善保管生成的 `.env`。
|
|
649
|
-
-
|
|
650
|
-
- 自定义 RPC 允许列表可能开放写操作;执行前确认方法及参数的影响。
|
|
883
|
+
- 助记词、私钥和 API Key 使用隐藏输入或 stdin 传入;passphrase 使用隐藏提示,不要将真实值写在命令参数中。
|
|
884
|
+
- 自定义 EVM RPC 允许列表可能开放写操作;执行前确认方法及参数的影响。
|
|
651
885
|
- 分享签名、已签名交易或查询结果前,确认其用途及接收方。
|
|
652
886
|
- 自动化调用使用 `--json --no-interactive`,同时检查退出码和风险警告。
|
|
653
887
|
|