关于 evm-swiss-knife
EVM Swiss Knife 是使用 Foundry 的 `cast` 命令行工具与 EVM 兼容区块链交互的技能,面向开发者和运维人员,涵盖读写操作、网络检查、合约部署与数据解码。
主要功能
- 01查询原生币和 ERC20 余额
- 02调用合约函数
- 03发送交易
- 04检查区块和交易
- 05部署合约
- 06解码十六进制数据
适用场景
- 01检查账户的代币余额
- 02读取 EVM 网络上的合约状态
- 03发送交易或合约调用
- 04检查区块并解码返回数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ kukapay/ crypto-skills --skill evm-swiss-knife安装后在 Claude Code 中输入/evm-swiss-knife确认已加载。
详细介绍
EVM 瑞士军刀
此技能可通过 Foundry 的 cast 命令行工具与兼容 EVM 的区块链交互。它涵盖常见的区块链操作,例如查询余额、调用合约、发送交易和检查网络。
安装
要使用此技能,需要安装 Foundry,它会提供 cast 命令。
请按照官方安装指南操作:https://getfoundry.sh/introduction/installation
快速安装(Linux/Mac)
-
安装 Foundryup:
curl -L https://foundry.paradigm.xyz | bash -
加载 shell 配置,或启动新的终端:
source ~/.bashrc # or ~/.zshrc -
安装 Foundry:
foundryup -
验证安装:
cast --version
其他平台或详细说明,请参阅完整指南:https://getfoundry.sh/introduction/installation
前置条件
- 已安装 Foundry(可使用
cast命令) - 已配置 RPC 端点(通过
--rpc-url或环境变量) - 用于交易操作的私钥(如果要发送交易)
选择 RPC URL
要与不同的 EVM 网络交互,需要可靠的 RPC 端点。使用 ChainList 的 API https://chainlist.org/rpcs.json 获取所有受支持链的完整 RPC URL JSON 列表。
如何选择 RPC URL:
-
获取 RPC 数据:
curl -s https://chainlist.org/rpcs.json | jq '.[] | select(.chainId == 1)' # For Ethereum (chain ID 1) -
查找符合以下条件的 RPC URL:
- 公开且免费:无需 API 密钥
- 无追踪或追踪有限:避免包含 "tracking": "yes" 的 URL
- 快速且可靠:优先选择延迟低或评分高的 URL
- 开源:优先选择由社区维护的端点
-
常见选择(摘自 ChainList):
- Ethereum(ID 1):https://ethereum-rpc.publicnode.com
- BNB Smart Chain(ID 56):https://bsc-dataseed.binance.org
- Base(ID 8453):https://mainnet.base.org
- Polygon(ID 137):https://polygon-rpc.com
-
用于生产环境时,可考虑使用 Alchemy、Infura 或 QuickNode 等付费 RPC 服务,以获得更高的可靠性和速率限制。
-
务必确认链 ID 与目标网络一致,避免连接到错误的链。
常见操作
查询账户余额
获取地址的 ETH 余额:
cast balance <address> --rpc-url <rpc_url>
获取 ERC20 代币余额:
cast call <token_contract> "balanceOf(address)(uint256)" <address> --rpc-url <rpc_url>
调用合约函数(只读)
调用 view/pure 函数:
cast call <contract_address> "<function_signature>" [args...] --rpc-url <rpc_url>
示例——获取代币总供应量:
cast call 0xA0b86a33E6441e88C5F2712C3E9b74B6F3f5a8b8 "totalSupply()(uint256)" --rpc-url <rpc_url>
发送交易
发送 ETH:
cast send --private-key <pk> --rpc-url <rpc_url> <to_address> --value <amount_in_wei>
调用合约函数(写入):
cast send --private-key <pk> --rpc-url <rpc_url> <contract_address> "<function_signature>" [args...]
检查区块链
获取最新区块编号:
cast block-number --rpc-url <rpc_url>
获取区块详情:
cast block <block_number> --rpc-url <rpc_url>
获取交易详情:
cast tx <tx_hash> --rpc-url <rpc_url>
部署合约
部署合约:
cast send --private-key <pk> --rpc-url <rpc_url> --create <bytecode> [constructor_args...]
解码数据
解码十六进制数据:
cast --to-ascii <hex_string>
cast --to-dec <hex_string>
特定网络示例
Ethereum 主网
export ETH_RPC_URL=https://eth-mainnet.alchemyapi.io/v2/YOUR_API_KEY
cast balance 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
Polygon
cast balance <address> --rpc-url https://polygon-rpc.com/
本地开发(Anvil)
cast balance <address> --rpc-url http://127.0.0.1:8545
错误处理
- RPC 错误:检查端点 URL 和网络连接
- 资金不足:确保账户有足够的 ETH 支付 Gas 和交易金额
- 合约错误:检查函数签名和参数类型
- 私钥错误:确保格式正确(以 0x 开头的十六进制)
高级用法
批量操作
使用 shell 循环执行多次查询:
for addr in addr1 addr2 addr3; do
echo "Balance of $addr: $(cast balance $addr --rpc-url $RPC_URL)"
done
Gas 估算
估算交易所需的 Gas:
cast estimate --rpc-url <rpc_url> <to_address> --value <amount>
ABI 交互
对于复杂合约,将 ABI 保存到文件并使用:
cast call --abi <abi_file> <contract> <function> [args...]
安全注意事项
- 切勿在脚本或日志中暴露私钥
- 使用环境变量存储敏感数据
- 在主网操作前,先在测试网上进行测试
- 核实合约地址和函数签名
- 关注 Gas 价格,选择合适的交易时机