solidity-hardhat-development について
solidity-hardhat-development は、Solidity 開発者向けの Hardhat 3 ガイドです。プロジェクト設定、テスト、デプロイ、マルチチェーン開発、v2 からの移行を扱います。
主な機能
- 01Hardhat 3 プロジェクトとプラグインの設定
- 02Solidity と TypeScript のテスト実行
- 03Hardhat Ignition による宣言的モジュールのデプロイ
- 04複数チェーンの並行テスト
- 05v2 からのプロジェクト設定移行
活用シーン
- 01Hardhat 3 プロジェクトの開始
- 02Solidity コントラクトのテストと Gas 使用量の確認
- 03コントラクトモジュールのシミュレーションとデプロイ
- 04Hardhat v2 プロジェクトの移行
MCP 対応
このガイドでは solidity-agent-toolkit との任意の連携を説明しています。そのツールでコントラクトのコンパイル、テスト実行、Gas スナップショット作成、デプロイのシミュレーション、セキュリティ分析ができます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ whackur/ solidity-agent-toolkit --skill solidity-hardhat-developmentインストール後、Claude Code で/solidity-hardhat-developmentを入力して読み込まれたか確認します。
同梱ファイルreferences/hardhat-cheatsheet.md
詳細
Hardhat 3 開発ガイド
適用する場面
- 新しい 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 の副作用インポートは機能しなくなりました。
ネットワークの type | 用途 |
|---|---|
edr-simulated | ローカルのプロセス内テスト |
http | リモート RPC 接続 |
chainType には "l1"、"op"、または "generic" を指定できます。ビルドプロファイルでは、環境ごとの設定(例:本番環境でのオプティマイザーの有効化)が可能です。
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 チートコードを使用可能。ファジングを標準搭載 |
| TypeScript | Node テストランナー + Viem、または Mocha + Ethers | networkHelpers プロパティからネットワークヘルパーにアクセス可能 |
| コマンド | 実行内容 |
|---|---|
npx hardhat test | すべてのテスト |
npx hardhat test solidity | Solidity テストのみ |
--coverage | カバレッジデータ |
--gas-stats | ガス使用量データ |
デプロイ(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) | コントラクト内のデバッグ出力 |
test コマンドの詳細度フラグ | トレースの詳細度を上げる |
| 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:ガスレポートを取得します。dry_run_deploy:デプロイをシミュレートします。run_slither、run_aderyn:セキュリティ分析を実行します。
参考資料
例については、Hardhat 3 チートシートを参照してください。