web3-testing

全面使用Hardhat和Foundry测试智能合约,涵盖单元测试、集成测试及主网分叉测试。适用于Solidity合约测试、区块链测试套件搭建或DeFi协议验证场景。

作者

安装

热度:7

下载并解压到你的 skills 目录

复制命令,发送给 OpenClaw 自动安装:

下载并安装这个技能 https://openskills.cc/api/download?slug=sickn33-skills-web3-testing&locale=zh&source=copy

Web3 智能合约测试技能指南

技能概述

使用 Hardhat 和 Foundry 测试框架,全面掌握智能合约测试策略,包括单元测试、集成测试、Gas 优化测试、模糊测试和主网分叉测试。

适用场景

1. 编写智能合约单元测试

为 Solidity 智能合约编写全面的单元测试,覆盖所有功能路径和边界条件。使用 Hardhat 的 Chai 断言库或 Foundry 的 Solidity 测试合约,验证合约逻辑的正确性,确保合约在各种输入条件下都能按预期工作。

2. 设置区块链测试套件

搭建完整的智能合约测试环境,包括本地测试网络、测试网部署和 CI/CD 集成。配置 Hardhat 或 Foundry 测试框架,集成代码覆盖率报告工具,实现测试自动化运行,确保每次代码变更都能及时发现潜在问题。

3. 验证 DeFi 协议安全性

通过主网分叉测试和模糊测试技术,验证 DeFi 协议在真实环境下的安全性和可靠性。模拟大额交易、极端市场条件和恶意攻击场景,确保协议能够正确处理各种边界情况,防范重入攻击和访问控制漏洞。

核心功能

1. Hardhat 测试框架配置

提供完整的 Hardhat 测试环境配置,包括网络分叉设置、Gas 报告生成、Etherscan 验证和代码覆盖率统计。使用 loadFixture 模式优化测试性能,利用 time 操作处理时间锁定的合约功能,通过 snapshot/revert 机制保持测试隔离性。

2. Foundry 高级测试模式

掌握 Foundry 的 Forge 测试框架,利用其强大的模糊测试和快速执行能力。使用 vm.cheatcodes 模拟各种测试场景,包括账户模拟、时间操控和主网分叉。编写属性测试用例,自动发现合约中的边界条件和潜在漏洞。

3. Gas 优化与性能测试

通过对比测试验证合约的 Gas 效率,识别可优化的代码路径。使用 hardhat-gas-reporter 生成详细的 Gas 消耗报告,分析不同实现的性能差异,在保持功能正确的前提下降低部署和执行成本。

常见问题

智能合约测试应该使用 Hardhat 还是 Foundry?

两者各有优势,选择取决于项目需求和团队偏好。Hardhat 提供 JavaScript/TypeScript 测试环境,生态丰富,适合需要与前端工具链集成的项目。Foundry 使用 Solidity 编写测试,执行速度极快,内置模糊测试功能,更适合追求测试性能和安全审计的场景。很多项目会同时使用两者,Hardhat 用于快速开发测试,Foundry 用于深度安全验证。

智能合约测试覆盖率达到多少才算合格?

建议智能合约测试覆盖率达到 90% 以上。但覆盖率只是一个指标,更重要的是测试的质量。确保所有关键功能、访问控制、状态转换和错误处理都有对应的测试用例。对于涉及资金或高价值的 DeFi 协议,建议达到接近 100% 的覆盖率,并包含全面的模糊测试和主网分叉测试。

如何分叉以太坊主网进行测试?

Hardhat 和 Foundry 都支持主网分叉功能。Hardhat 通过配置 forking 参数指定 RPC URL 和区块号,Foundry 使用 vm.createSelectFork() 函数。分叉后可以与主网上的真实合约(如 Uniswap、DAI、USDC)进行交互,模拟真实交易场景。这对于测试与现有协议集成的合约特别有用,可以在不使用真实资金的情况下验证合约在主网环境中的行为。