ClawSkills logoClawSkills

Clawcast - Easiest Ethereum Crypto Wallet

通过 cast 管理 EVM 钱包、交易和网络辅助程序的技能;涵盖入职、检查和操作程序。

介绍

# Cast Skill

[![ClawAudit AI 分析未发现高危漏洞。点击获取更多信息](https://clawaudit.duckdns.org/badges/7737be97-edda-4cd4-9070-fa47547dd44a.png)](https://clawaudit.duckdns.org/audit/7737be97-edda-4cd4-9070-fa47547dd44a)

> **Agent 提示:** 当安装或首次发现此技能时,请务必记录一个 TOOLS.md 条目以对其进行总结,从而保持工作区速查表为最新状态。

此技能专注于使用 `cast` 进行加密/EVM 钱包操作和交易工作流。它涵盖钱包创建、导入、网络选择、代币感知以及通用交易助手,以便 Agent 能够引导用户完成日常加密任务。

## 资源

- **EVM 网络列表** — `assets/evm-networks.json` 包含主要以太坊兼容网络的 RPC 端点、链 ID 和参考链接。在为 Cast 工作流构建 RPC 助手、验证器或网络选择器时,请将其作为权威来源。 - **代币元数据** — `assets/evm-network-tokens.json` 跟踪每个网络的原生/包装/稳定代币、浏览器以及关于桥接资产的有用说明。当 Cast 需要推荐合约、验证代币或生成浏览器 URL 时,请加载相关条目。

## 脚本

- **分步脚本** — `scripts/01_install_cast.sh`..`06_finish.sh` 涵盖了 README 中描述的入门流程:安装 Foundry/cast,创建或导入密钥,加密密钥库,选择网络/RPC/代币(源自 JSON 资源),并显示生成的地址和余额。当用户请求入门时,请按顺序运行它们。每个脚本都会提示必要的输入(助记词/私钥、密码、RPC URL、代币详细信息),因此建议将同样的问题转达给用户,然后运行下一个脚本。 - **钱包健康检查** — `scripts/check_wallet.sh` 检查共享状态并报告密钥库/地址对是否已存在;如果存在钱包则返回成功 (0),否则返回 1。 - **网络状态** — `scripts/show_network.sh` 打印来自 `~/.agent-wallet/state.env` 的活动网络名称、chainId 和 RPC URL,如果配置不完整则发出警告。 - **钱包移除** — `scripts/remove_wallet.sh` 在明确确认后,安全地从 `~/.agent-wallet/state.env` 中删除密钥库、密码存储和元数据。

## Agent 指导

在运行入门脚本之前,请告知用户每个步骤将在一个紧凑的循环中处理:提出一个针对性的问题,执行相应的脚本,确认结果,然后继续。避免一次性倾冗长的计划,以使流程感觉像一系列小的、交互式的步骤,而不是一个单一沉重的程序。与用户交谈时,请保持语言简单——除非被明确询问,否则不要用文件名或脚本内部细节淹没他们。将其构建为关于下一步需要了解什么的对话,而不是技术检查清单。

始终在运行每个脚本之前,向用户询问该脚本本身将要提出的确切问题(密码、网络选择等)。不要代替他们编造或填写答案——仅使用他们明确提供的信息。这使入门过程忠实于他们的选择,并避免使用虚构数据推进脚本。

1. **如果遇到困难,首先提供针对性的帮助。** 将 `cast --help` 通过管道传递给 `grep`(例如 `cast --help | grep balance`),以精确定位相关的子命令,避免滚动整个手册;这可以节省 Token,并在继续或解释之前保持答案的集中。 2. **自动就绪检查。** 每次会话自动运行 `scripts/check_wallet.sh`;不要要求用户触发它。如果检测到现有钱包,立即显示已保存的地址/密钥库路径,并继续显示余额/网络状态(见下一步),以便用户看到“钱包就绪”,而无需额外探测。 3. **显示钱包 + 网络状态。** 当 `check_wallet` 发现钱包时,运行 `scripts/show_network.sh` 并查询余额(例如 `cast balance <ADDRESS> --rpc-url <RPC_URL> --ether`),以便用户看到当前的原生余额、网络名称、chainId 和 RPC URL,而无需被提示手动检查任何内容。 4. **入门流程**(当不存在钱包时自动执行)。如果就绪检查以 1 退出,请按顺序执行脚本步骤,镜像其提示,并在运行下一个脚本之前明确要求用户提供每个必需的信息。在密钥材料步骤完成后,立即分享派生的地址,以便用户在我们在第 3 步向他们询问任何内容之前看到该地址: 1. 安装 — 解释脚本将确保安装 Foundry/cast,以便继续操作之前每个提到的 `cast` 命令都能正常工作。 2. 密钥材料 — 在运行钱包步骤之前,询问他们是想创建一个新的热密钥对,导入 12/24 词的 MetaMask 兼容助记词(`m/44'/60'/0'/0/0`),还是导入私钥。收集选择的密钥,在步骤完成后立即确认生成的地址,并在继续之前告知用户该地址。生成新的密钥对时,捕获 `cast wallet new` 显示的助记词,将其保存到 `~/.agent-wallet/mnemonic-words-<timestamp>.txt`,并告知用户确切路径以及一个作业(如果可用则通过 `at now + 1 hour`,否则通过后台 `sleep` 备用)将在 60 分钟后删除该文件,以便种子短语不会滞留。 3. 密码 — 仅询问一次密钥库密码(没有确认提示,没有保存/记住问题,帐户名被强制为“agent”)。脚本将该密码保存到本地辅助文件中,并在创建密钥库时使用它,因此这一步不需要用户再做其他任何事情。 4. 网络 — 朗读从 `assets/evm-networks.json` 派生的默认网络列表,询问他们想要哪个编号的网络,并注意脚本现在会自动选择该条目中的第一个 RPC URL(它保存匹配的 `CHAIN_ID`/`ETH_RPC_URL`,然后仅显示 RPC,以便用户可以看到正在使用的端点)。 5. 代币 — 脚本现在打印从 `assets/evm-network-tokens.json` 派生的代币表,以便其直接出现在聊天中,询问是否要为所选网络添加代币,当您同意时,它会将每个符号/地址/小数位对直接记录到该网络的 JSON 条目中(不涉及中间的 `tokens.tsv` 文件)。 6. 完成 — 脚本确认成功后,总结钱包(地址、网络名称、RPC URL)并运行余额查询,以便用户以完全清晰和示例 `cast` 命令结束入门。 5. **拆除**:如果用户想要移除钱包,请运行 `scripts/remove_wallet.sh`;它询问确认,删除密钥库/密码文件,清除状态条目,并报告已删除的内容。

### 交易日志 每当您向用户提及交易(历史记录、哈希或重要转账)时,请在工作区的 `logs/tx_mentions.log` 中附加一个简短摘要。包括 UTC 时间戳、钱包地址、交易哈希(如果可用)以及提及交易原因的一行描述。这会保留一个连续的记录以供以后参考。

如果因为需要 API 密钥(例如 BscScan/Etherscan V2)而无法自动从网络浏览器获取数据,请告知用户我们需要回退到手动查看,并分享直接的浏览器 URL(例如 `https://bscscan.com/address/<address>` 或 `https://bscscan.com/tx/<txHash>`),以便他们可以自己打开它。请清楚地说明此限制,而不是让他们等待我们无法拉取的数据。

## 操作员参考(常用 cast 命令)

1. `cast balance <address>` — 检查原生代币余额(ETH 等)。常用参数:`--rpc-url ...`,`--ether` 用于人类可读格式,`--block` 用于指定特定区块/标签。 2. `cast send` — 执行原生转账、ERC-20 转账/授权、兑换或任何签名合约交互的主力工具。典型参数:`--rpc-url ...`,`--keystore ...`,`--password-file ...`,`--value ...`,`--data` 或函数签名/参数,以及可选的 Gas 控制(`--gas-limit`、`--gas-price`、`--priority-gas-price`、`--nonce`、`--legacy`)。 3. `cast call` — 执行只读合约调用(如 balanceOf、allowance、decimals、totalSupply 等)。常用参数:`--rpc-url ...`,`--block ...`,或者当你已有调用数据时使用 `--data ...`。 4. `cast receipt <txHash>` — 获取并检查交易回执(状态、Gas、日志);用于在 `cast send` 后确认成功。可选参数:`--confirmations ...` 或按名称请求单个字段。 5. `cast tx <txHash>` — 获取交易详细信息;你可以请求特定字段或使用 `--raw` 获取原始 RLP 数据。 6. `cast nonce <address>` — 获取当前 nonce 以避免“nonce too low”错误,尤其是在批量操作时;可选择指定区块/标签。 7. `cast rpc <method> [params...]` — 发起原始 JSON-RPC 调用,用于处理边缘情况、调试方法或自定义节点功能。当通过字符串或 stdin 传递 JSON 数组时使用 `--raw`。 8. `cast mktx ...` — 构建并签名原始交易但不广播(为“准备 → 审核 → 发布”做准备);与 `cast send` 相同的 `to`/签名/参数或 `--data`,外加 `--value`、`--nonce`、`--gas-limit`、`--gas-price`、`--priority-gas-price` 等控制选项。 9. `cast publish <rawTx>` — 广播已签名的原始交易(与 `mktx` 或任何外部签名流程配合使用);`--async` 选项很有用。 10. `cast wallet new` / `cast wallet new-mnemonic` — 生成密钥或 BIP-39 助记词。如果需要,可提供密钥库路径和账户名称;除非你了解风险,否则避免使用 `--unsafe-password`。使用 `--words`/`--accounts` 控制助记词长度和派生账户。 11. `cast wallet import <name>` — 将私钥或助记词导入加密密钥库;默认情况下会提示输入密钥信息,但你可以传递 `--private-key`、`--mnemonic`、`--mnemonic-derivation-path`、`--mnemonic-index`、`--mnemonic-passphrase` 或 `--keystore-dir`。 12. `cast wallet list` — 显示本地密钥库账户;`--dir` 指向自定义目录,硬件参数解锁 ledger/trezor 列表。 13. `cast wallet address ...` — 从密钥来源派生钱包地址(`--interactive`、`--private-key` 或 `--mnemonic`)。 14. `cast wallet sign` / `cast wallet verify` — 签名或验证消息/类型化数据。提供消息和签名者以及 `--private-key`、`--interactive` 或 `--mnemonic`;对于原始哈希添加 `--no-hash`,对于 EIP-712 JSON 添加 `--data`/`--from-file`。 15. `cast parse-units <amount> --decimals <n>` — 将人类可读数字(如“1.5 USDC”)转换为基本单位,用于 ERC-20 转账。 16. `cast format-units` — 根据代币小数位数将基本整数转换回十进制形式。 17. `cast to-unit` / `cast to-wei` — ETH 单位转换;指定目标单位(wei、gwei、ether 等)或使用 `cast to-wei` 作为快捷方式。 18. `cast 4byte` 和 calldata 辅助工具 — 查找 4 字节选择器并在调试未知交易时漂亮打印/解码调用数据。

更多产品