mcpField
E
evm-swiss-knife

evm-swiss-knife

github.com/kukapay其他37185 次安装25 周前更新
代码仓库

关于 evm-swiss-knife

EVM Swiss Knife 是使用 Foundry 的 `cast` 命令行工具与 EVM 兼容区块链交互的技能,面向开发者和运维人员,涵盖读写操作、网络检查、合约部署与数据解码。

主要功能

  1. 01查询原生币和 ERC20 余额
  2. 02调用合约函数
  3. 03发送交易
  4. 04检查区块和交易
  5. 05部署合约
  6. 06解码十六进制数据

适用场景

  1. 01检查账户的代币余额
  2. 02读取 EVM 网络上的合约状态
  3. 03发送交易或合约调用
  4. 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)
  1. 安装 Foundryup:

    curl -L https://foundry.paradigm.xyz | bash
    
  2. 加载 shell 配置,或启动新的终端:

    source ~/.bashrc  # or ~/.zshrc
    
  3. 安装 Foundry:

    foundryup
    
  4. 验证安装:

    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:
  1. 获取 RPC 数据:

    curl -s https://chainlist.org/rpcs.json | jq '.[] | select(.chainId == 1)'  # For Ethereum (chain ID 1)
    
  2. 查找符合以下条件的 RPC URL:

    • 公开且免费:无需 API 密钥
    • 无追踪或追踪有限:避免包含 "tracking": "yes" 的 URL
    • 快速且可靠:优先选择延迟低或评分高的 URL
    • 开源:优先选择由社区维护的端点
  3. 常见选择(摘自 ChainList):

  4. 用于生产环境时,可考虑使用 Alchemy、Infura 或 QuickNode 等付费 RPC 服务,以获得更高的可靠性和速率限制。

  5. 务必确认链 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 价格,选择合适的交易时机

评论

支持 Markdown