用途 该技能旨在让 Claude 帮助用户在 EVM 兼容网络上读写智能合约。它面向需要查看链上合约数据、调用只读函数、发送状态变更交易,或确认某地址是否为合约的场景。
主要能力
- 地址类型判断:通过读取字节码区分合约与外部账户(EOA)。
- 读取合约数据:调用 view/pure 只读函数,例如读取 ERC20 的 name、symbol、decimals、totalSupply。
- 写入合约:调用会修改链上状态的函数,需要 gas,发送后等待交易回执确认。
- MCP 工具:提供 is_contract(判断地址类型)、read_contract(调用只读函数)、write_contract(调用状态变更函数)三个工具。
- 批量读取:使用 multicall 在一次调用中读取多个值。
- 交易模拟:发送前用 simulateContract 检查交易是否会成功。
- 数据编解码:使用 encodeFunctionData 编码函数调用、decodeFunctionData 解码交易输入数据。
- ABI 处理:支持最小 ABI 和人类可读 ABI(parseAbi)。
使用方式 资料中的示例基于 viem 库,网络以 bsc 为例。读取数据使用 createPublicClient 与 readContract;写入使用 createWalletClient 与 writeContract,并用 publicClient.waitForTransactionReceipt 等待确认。ABI 可以只包含所需函数,或以人类可读字符串形式传入。
安全提醒 资料建议在交互前到区块浏览器验证合约源码,仔细审查要签名的函数调用,先在测试网测试,谨慎处理无限授权,并注意代理合约的实现可能与表面不同。错误处理部分区分了 execution reverted(检查输入)与 ABI 不匹配等情况。
适用场景与限制 适用于 ERC20 类代币信息读取、自定义合约函数调用、交易数据解析与编码等。限制方面:资料仅基于 viem 演示,未提供其他语言或库的用法;未说明支持的完整网络清单、收费、价格或性能数据;实际使用需自行准备 RPC 与私钥等配置。