SuperAPI AI 工具集

hardhat-toolbox-viem

通用与其它

查看项目

更新于 10-16 02:32

技能介绍

用途:当项目依赖 @nomicfoundation/hardhat-toolbox-viem 时,配合核心 hardhat 技能使用。核心技能负责测试组织、network.create() 形态、networkHelpers、fixtures 与类型检查流程,本技能聚焦 network.create() 返回连接上的 viem 能力。

主要能力:viem 客户端与合约交互。可通过 viem.getPublicClient() 获取公共客户端,viem.getWalletClients() 获取默认账户钱包客户端,viem.getTestClient() 执行仅开发环境操作。viem.deployContract("Counter") 部署合约并返回完全类型化实例;counter.read.x() 读取状态,返回类型由 ABI 推断;counter.write.inc() 等写交易在编译期按 ABI 检查参数与选项,可传 account、参数数组或 value。viem.getContractAt("Counter", "0xabc...") 可附加到已部署合约。

断言:viem.assertions 提供以太坊专用断言,首个参数传未 await 的交易 promise。包括 revert、revertWith、revertWithCustomError、revertWithCustomErrorWithArgs、emit、emitWithArgs、balancesHaveChanged(正数为收到、负数为支出,不含 gas)。*WithArgs 匹配器在任意参数位置接受 (value) => boolean 谓词,也可用 anyValue 辅助函数忽略某位置。普通 TypeScript 断言使用 node:assert/strict。

使用方式:在 loadFixture 的 setup 函数中,viem.deployContract 是标准部署步骤。

限制:避免用 walletClient.writeContract 交互合约,因其无 ABI 类型检查,错误参数不会被发现;应优先使用 viem.deployContract 或 viem.getContractAt 返回的类型化实例。其余细节暂未提供。