SuperAPI AI 工具集

solidity-hardhat-development

编程与开发

查看项目

更新于 10-16 02:03

技能介绍

用途

本技能面向 Hardhat 3.x 的 Solidity 智能合约开发工作流,适用于以下场景:启动新的 Hardhat 3 项目、从 v2 迁移到 v3、使用 Foundry 兼容测试测试 Solidity 合约、使用 Hardhat Ignition 部署,以及构建多链应用。

环境要求

  • Node.js:v22.10 或更新版本
  • 模块系统:ESM,需在 package.json 中设置 "type": "module"
  • 初始化命令:npx hardhat --init
  • 配置入口:来自 hardhat/config 的 defineConfig

配置

使用 solidity、networks 和 plugins 键组织配置。使用 configVariable("KEY") 处理密钥,避免将其写入代码。插件必须显式列出——v2 中的副作用导入方式不再有效。

网络类型:

  • edr-simulated:用于本地进程内测试
  • http:用于远程 RPC 连接

chainType 接受 "l1"、"op" 或 "generic"。构建配置文件(build profiles)允许按环境设置,例如为生产环境启用优化器。

示例配置:

import { defineConfig, configVariable } from "hardhat/config";
import { hardhatIgnition } from "@nomicfoundation/hardhat-ignition";

export default defineConfig({
  solidity: "0.8.28",
  plugins: [hardhatIgnition],
  networks: {
    hardhat: { type: "edr-simulated" },
    mainnet: { type: "http", url: configVariable("MAINNET_RPC_URL") },
  },
});

测试

测试类型与运行器:

  • Solidity(.t.sol):由 Rust 驱动,继承 forge-std/Test.sol,支持完整的 vm cheatcodes,内置模糊测试(fuzzing)
  • TypeScript:Node 测试运行器 + Viem,或 Mocha + Ethers;通过 networkHelpers 属性访问网络辅助工具

命令:

  • npx hardhat test:运行所有测试
  • npx hardhat test solidity:仅运行 Solidity 测试
  • --coverage:覆盖率数据
  • --gas-stats:Gas 使用数据

部署(Ignition)

Hardhat Ignition 是主要的部署框架:通过 buildModule 声明式定义模块、自动并行化交易、自动恢复失败的部署。

  • 部署:npx hardhat ignition deploy ignition/modules/MyModule.ts --network <network>
  • 验证:使用 @nomicfoundation/hardhat-verify 插件

多链支持

Hardhat 3 可同时模拟多条链。使用 const mainnet = await network.connect("mainnet") 按网络连接。可并发分叉多条链,用于复杂的跨链测试。

调试

  • console.log(hardhat/console.sol):在合约内进行打印调试
  • 测试命令的 verbosity 标志:提高跟踪详细程度
  • EDR 堆栈跟踪:详细的失败跟踪

从 v2 迁移

v2 与 v3 对照:

  • CommonJS → ESM("type": "module")
  • Node.js < 22 → Node.js v22.10+
  • module.exports → defineConfig
  • 副作用插件导入 → 显式 plugins 数组
  • Ethers v5 → Ethers v6 或 Viem
  • 单一网络对象 → 多链 NetworkManager
  • v2 插件 → v3 专用插件版本

必备插件:hardhat-verify、hardhat-ignition、hardhat-keystore。

通过 MCP 增强

当 solidity-agent-toolkit 可用时,可提供以下能力:

  • compile_contract:构建合约并获取产物
  • run_tests:执行测试套件
  • gas_snapshot:获取 Gas 报告
  • dry_run_deploy:模拟部署
  • run_slither、run_aderyn:执行安全分析

参考

可参阅 Hardhat 3 Cheatsheet 获取示例。