スマートコントラクト開発フレームワーク
Foundry(Forge・Anvil・Cast)・Hardhat・Remix・OpenZeppelin の 4 大フレームワークのテスト・デプロイ・ファジング workflow を解説。EVM スマートコントラクト開発の実務ツールチェーンを整理する。
article technology ja Foundry(Forge・Anvil・Cast)・Hardhat・Remix・OpenZeppelin の 4 大フレームワークのテスト・デプロイ・ファジング workflow を解説。EVM スマートコントラクト開発の実務ツールチェーンを整理する。スマートコントラクト開発フレームワーク
EVM スマートコントラクト開発の実務では、コンパイル・テスト・デプロイ・デバッグを統合するフレームワークの選択が生産性と安全性を大きく左右する。現在の主流は Foundry(Rust 製・高速テスト)・Hardhat(JavaScript/TypeScript 生態系)・Remix(ブラウザ IDE)・OpenZeppelin(標準ライブラリ)の 4 系統だ。情報カットオフ ~2025-08、confidence: medium 固定(2026-06 時点での外部再検証は未実施)。
Foundry — Rust 製の高速テストフレームワーク
Foundry は Paradigm が OSS で開発・公開した Rust 製の EVM 開発ツールチェーンで、2022 年以降に Hardhat に代わり多くのプロトコル開発者に採用されている。3 つのコンポーネントで構成される。
Forge(テスト・コンパイル): Foundry のコアコンポーネント。Solidity でテストを書ける点が最大の特徴で、JavaScript のテストランナーを別途学ぶ必要がない。forge test コマンドで全テストを実行し、Rust の高速性により Hardhat 比で 10〜100 倍高速な場合がある。
ファジングテスト: Forge はプロパティベーステストとファジングを組み込みでサポートする。テスト関数の引数に型を宣言すると、Foundry が無数のランダム入力値を自動生成してテストを実行する。これにより「手で思いつかない境界値」のバグを発見しやすい。
// Foundry ファジングの例(引数は自動生成される)
function testTransfer(uint256 amount) public {
vm.assume(amount > 0 && amount <= token.balanceOf(alice));
vm.prank(alice);
token.transfer(bob, amount);
assertEq(token.balanceOf(bob), amount);
}
Anvil(ローカルノード): Hardhat Network 相当のローカル EVM ノード。フォーク機能(--fork-url)でメインネットの状態をローカルに再現し、既存プロトコルとのインテグレーションテストが可能。
Cast(CLI コマンド): オンチェーンデータの読み取り・トランザクション送信・ABI デコードをコマンドラインで行うユーティリティ。
Hardhat — JavaScript エコシステムの標準
Hardhat は Nomic Foundation が開発した JavaScript/TypeScript ベースの EVM 開発環境で、2019〜2021 年に Truffle を置き換えて標準的地位を確立した。
プラグインエコシステム: Hardhat の強みはプラグインの豊富さにある。hardhat-ethers(ethers.js 統合)・hardhat-waffle(Chai アサーション)・hardhat-gas-reporter(gas 使用量レポート)・hardhat-coverage(カバレッジ計測)などを組み合わせて使う。
Hardhat Network: Solidity console.log による printf デバッグをサポートするローカル EVM。スタックトレースの表示が Foundry より詳細なケースもあり、デバッグ用途で好まれる場面がある。
デプロイスクリプト: hardhat-deploy プラグインや ignition モジュール(Hardhat Ignition、2023〜)でデプロイ工程を宣言的に管理できる。
現状の位置付け: 2024〜2025 年時点では Foundry が新規プロジェクトの主流となりつつある一方、JavaScript 生態系との統合が必要なフロントエンド開発者や既存プロジェクトのメンテナンスでは Hardhat が引き続き使われている。
Remix — ブラウザ IDE
Remix IDE は Ethereum Foundation が提供するブラウザベースの統合開発環境で、インストール不要でスマートコントラクトの作成・コンパイル・デプロイ・デバッグができる。
主な用途: 学習・プロトタイプ開発・小規模なコントラクトの素早いデプロイに適する。コード補完・静的解析(Solhint)・デバッガが統合されており、初学者のエントリーポイントとなっている。
Remix のプラグイン: Remix はプラグインアーキテクチャを採用しており、形式検証ツール(Certora)・フォーマッタ・外部ネットワーク接続などをブラウザ内で追加できる。
限界: 大規模プロジェクトには向かない。ファイル管理・バージョン管理・テスト自動化の観点で Foundry/Hardhat が優れる。
OpenZeppelin — 標準ライブラリとアップグレード可能コントラクト
OpenZeppelin Contracts は ERC-20・ERC-721・ERC-1155・アクセス制御・タイムロックなどのスマートコントラクト標準実装を提供する最も広く使われた Solidity ライブラリである。
標準実装:
- ERC-20:
transfer・approve・allowanceなどトークン標準の参照実装 - ERC-721: NFT 標準の参照実装(
_safeMint・tokenURI等) - AccessControl: ロールベースのアクセス制御(
ADMIN_ROLE・MINTER_ROLE等) - TimelockController: ガバナンス操作に遅延(タイムロック)を加えるコントラクト
Upgradeable(アップグレード可能コントラクト): OpenZeppelin は Proxy パターン(透過的プロキシ・UUPS プロキシ)によるアップグレード可能コントラクトのライブラリを提供している。@openzeppelin/contracts-upgradeable を使うとロジック分離型のコントラクトを実装できるが、プロキシパターンは複雑性とストレージコリジョンリスクを伴う。
Defender: OpenZeppelin が提供する SaaS ツールで、マルチシグウォレット経由のデプロイ管理・監視・自動化を提供する。本番運用でのオペレーション安全性を高める目的で使われる。
テスト・デプロイ Workflow の全体像
実務的なスマートコントラクト開発 workflow の典型例を示す。
| フェーズ | ツール | 内容 |
|---|---|---|
| 開発 | Remix / VSCode + Foundry | コード作成・コンパイル |
| 単体テスト | Forge | ユニットテスト・ファジング |
| インテグレーション | Anvil fork | メインネットフォーク上でのテスト |
| 静的解析 | Slither / Mythril | 自動脆弱性スキャン |
| 監査 | 外部監査会社 | 人手によるコードレビュー |
| デプロイ | Forge script / Hardhat Ignition | スクリプトによるデプロイ |
| 監視 | OpenZeppelin Defender / Tenderly | オンチェーンイベント監視・アラート |
セキュリティ監査の詳細は tech-226 を、VM とコンパイルターゲットの関係は tech-220 を参照のこと。
Backlinks
- has_parts Developer Tooling & Workflow(開発ツール・ワークフロー)
- related スマートコントラクト VM(仮想マシン)
- related スマートコントラクト言語
- related スマートコントラクトのセキュリティ監査