foundry について
foundry は、Ethereum と EVM 互換チェーン向けの Solidity スマートコントラクトを開発するコマンドラインツールキットです。コンパイル、テスト、依存関係管理、スクリプトによるデプロイをまとめて扱えます。
主な機能
- 01Solidity のインクリメンタルコンパイル
- 02ファジングと不変条件テスト
- 03スクリプトによるコントラクトのデプロイ
- 04Git サブモジュールとリモート依存関係の管理
- 05ABI とバイトコードの生成
活用シーン
- 01Solidity コントラクトの構築とテスト
- 02ネットワークのフォーク環境でのテスト
- 03カスタムスクリプトによるコントラクトのデプロイ
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill foundryインストール後、Claude Code で/foundryを入力して読み込まれたか確認します。
詳細
foundry
目的
Foundry は、Solidity で記述された Ethereum スマートコントラクトを効率的に開発、テスト、デプロイするためのコマンドラインツールキットです。内部で Rust を使用し、ブロックチェーン開発者向けに高速なコンパイルとシンプルなワークフローを提供します。
使用する場面
Ethereum 向けの Solidity ベースのスマートコントラクトを構築または保守する際に Foundry を使用してください。特に、迅速な反復開発、ローカルテスト、テストネットやメインネットへのデプロイが必要な場合に適しています。DeFi アプリや NFT の開発など、スクリプトによる自動化が必要なプロジェクトに最適です。速度とシンプルさを重視する場合は、Truffle や Hardhat などの代替ツールよりも適しています。
主な機能
- Solidity コントラクトをインクリメンタルビルドでコンパイルし、開発を高速化します。
- ファジングテストと不変条件テストを含むユニットテストを実行し、エッジケースを検出します。
- カスタマイズ可能なスクリプトを使用して、Ethereum ネットワークにコントラクトをデプロイします。
- Git サブモジュールまたは npm のようなリモートを介して依存関係を管理します。
- dApps との連携用に ABI とバイトコードを生成します。
- Polygon など、Ethereum 以外の EVM 互換チェーンもサポートします。
使用パターン
まず forge init でプロジェクトを初期化し、src ディレクトリにコントラクトを記述します。forge build と forge test を使って、ビルドとテストを繰り返します。デプロイするには、script にスクリプトを作成し、forge script で実行します。環境ごとに foundry.toml でネットワークを設定してください。複数のコントラクトを扱うには、Solidity ファイルで継承とインポートのパターンを使用します。
主なコマンド/API
Foundry は CLI コマンドで操作し、直接利用できる API エンドポイントはありません。ターミナルで次のコマンドを使用します。
forge init --no-git:Git リポジトリを作成せずに新しいプロジェクトを初期化します。例:forge init mycontract。forge build --force:すべてのコントラクトを強制的に再ビルドしてコンパイルします。コード例:cd myproject forge build --forceforge test --fork-url $ETH_RPC_URL:フォークしたメインネットでテストを実行します。RPC には環境変数を使用します:export ETH_RPC_URL=https://mainnet.infura.io/v3/$INFURA_KEY。コード例:forge test --fork-url $ETH_RPC_URL --fork-block-number 15000000forge deploy --rpc-url $ETH_RPC_URL --private-key $ETH_PRIVATE_KEY:コントラクトをデプロイします。認証には、ウォレットキーを$ETH_PRIVATE_KEYに設定します。コード例:forge deploy --rpc-url $ETH_RPC_URL --private-key $ETH_PRIVATE_KEY --broadcastforge script script/MyScript.sol:run --sig "run()" --rpc-url $ETH_RPC_URL:カスタムスクリプトを実行します。foundry.toml の設定形式:[rpc_endpoints] mainnet = "${ETH_RPC_URL}"。
統合に関する注意
Solidity 拡張機能をインストールし、"forge build" などのコマンドを実行する tasks.json を追加すると、Foundry を VS Code と連携できます。CI/CD では、次のステップを含む GitHub Actions を使用します:run: forge test --fork-url ${{ env.ETH_RPC_URL }}。互換性のために Hardhat を使用する場合は、out ディレクトリからアーティファクトをインポートします。キーには環境変数を設定します:export ETH_PRIVATE_KEY=$YOUR_KEY。Docker では、FROM foundryparis/evm:latest を含むイメージをビルドし、設定の上書き用に foundry.toml を追加します。
エラー処理
コンパイルエラーなどの一般的なエラーは、forge build --verbose を実行して詳細なログを確認してください。フォークの問題が原因でテストに失敗する場合は、$ETH_RPC_URL を確認し、--fork-retries 3 を使って再試行します。デプロイエラー(例:残高不足)が発生した場合は、cast balance <address> を使い、アカウントに ETH があることを確認してください。スクリプトでは --gas-estimate を使ってガスを見積もります。エラーになる場合は、foundry.toml の [etherscan] api_key = "$ETHERSCAN_API_KEY" のように手動で上書きしてください。Solidity のリバートに備え、スクリプトは必ず try-catch で囲んでください。
具体的な使用例
-
例 1:シンプルなコントラクトの作成とテスト
src/MyContract.sol にコントラクトを作成します:contract MyContract { uint public x = 1; }。次に、ビルドします:forge build。test/ にテストファイルを作成して、テストします:forge test:function testExample() public { assertEq(myContract.x(), 1); }。これにより、5 分もかからずに基本的な機能を検証できます。 -
例 2:テストネットへのデプロイ
script/Deploy.sol にデプロイスクリプトを記述します:function run() public { vm.broadcast(); new MyContract(); }。実行します:forge script script/Deploy.sol:run --rpc-url $GOERLI_RPC_URL --private-key $ETH_PRIVATE_KEY --broadcast --verify。これにより、Etherscan が設定されている場合は Etherscan を使用して、Goerli にデプロイし、検証します。
グラフの関係
- 関連するクラスター:ブロックチェーン
- 関連するタグ:ethereum、solidity、smart-contracts
- 依存関係:rust、solidity compiler
- 併用ツール:フロントエンドには ethers.js、移行時の互換性には hardhat