mcpField
H
hardhat

hardhat

github.com/alphaonedev開発46 回インストール
リポジトリ

hardhat について

hardhatはEthereum開発者向けのSolidity開発環境です。ネットワーク設定やプラグインに対応し、コントラクトのコンパイル、テスト、デプロイを行えます。

主な機能

  1. 01Solidityコントラクトのコンパイル
  2. 02Mochaによるテスト実行
  3. 03ネットワークへのデプロイ
  4. 04メインネットのフォークでテスト
  5. 05プラグインによる拡張

活用シーン

  1. 01Solidityプロジェクトのコンパイル
  2. 02ローカルブロックチェーンでのテスト
  3. 03テストネットへのコントラクトデプロイ

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill hardhat

インストール後、Claude Code で/hardhatを入力して読み込まれたか確認します。

詳細

hardhat

目的

Hardhatは、Solidityスマートコントラクトのコンパイル、テスト、デプロイを効率的に行えるEthereum開発環境です。プロフェッショナルなブロックチェーン開発者向けのワークフローを自動化します。

使用する場面

ローカルブロックチェーンシミュレーター、自動テスト、Goerliなどのテストネットへのデプロイが必要なEthereumスマートコントラクト開発には、Hardhatを使用してください。特に、デバッグやdAppsとの統合など、Solidityコードのコンパイルが必要なプロジェクトで活用してください。Ethereum以外のブロックチェーンや、単純なスクリプト作成には適していません。

主な機能

  • コンパイラのバージョンをカスタマイズしてSolidityファイルをコンパイルできます(例:hardhat.config.jsでsolidity: "0.8.17"を指定)。
  • MochaまたはHardhatのAPIを使ってユニットテストを実行でき、expect(await contract.balance()).to.equal(100)のようなアサーションをサポートします。
  • ethers.jsを使ってコントラクトをネットワークにデプロイでき、テスト用にメインネットをフォークする機能も組み込まれています。
  • プラグイン(例:@nomiclabs/hardhat-ethers)で拡張し、ガスレポートなどの高度な機能を利用できます。
  • 設定で複数のネットワークを扱えます。たとえば、RPC URLとaccounts配列を指定してGoerliを定義できます。

使用パターン

Hardhatプロジェクトをセットアップするには、新しいディレクトリでnpx hardhat initを実行し、Solidityファイルをcontractsフォルダーに、テストをtestフォルダーに追加します。ワークフローでは、まずネットワークとSolidityの設定をhardhat.config.jsで行ってください。デプロイにはスクリプトを使用します。scriptsにethersをインポートしてコントラクトをデプロイするJSファイルを作成してください。コンパイル、テストの実行、デプロイの順に反復してテストします。スクリプトでは、process.env.PRIVATE_KEYのような環境変数を使い、機密データを必ず管理してください。

主なコマンド/API

  • コントラクトをコンパイル:npx hardhat compile --forceを実行すると、キャッシュを無視してすべてのファイルを再ビルドします。
  • テストを実行:npx hardhat test test/MyContract.jsを実行すると、特定のテストをMochaで実行します。
  • ネットワークにデプロイ:npx hardhat run scripts/deploy.js --network goerliを実行します。deploy.jsは次のようになります。
    const hre = require("hardhat");
    async function main() { const MyContract = await hre.ethers.deployContract("MyContract"); await MyContract.waitForDeployment(); }
    main();
    
  • ネットワーク情報を表示:npx hardhat nodeを実行すると、テスト用のローカルブロックチェーンが起動します。
  • APIの使用:スクリプトでhre.ethers.getSigners()を使うとアカウントを取得できます。設定にはhardhat.config.js形式を使用します。
    module.exports = { networks: { goerli: { url: process.env.GOERLI_RPC_URL, accounts: [process.env.PRIVATE_KEY] } }, solidity: "0.8.17" };
    
  • 環境変数を設定:コマンドの実行前に、export PRIVATE_KEY=0xYourPrivateKeyのようにキーをエクスポートします。

統合に関する注意事項

ethers.jsとHardhatを統合するには、@nomiclabs/hardhat-ethersをインストールし、ウォレットとプロバイダーの管理に使うスクリプトでインポートします。CI/CDではGitHub Actionsと組み合わせ、ワークフローのYAMLにnpx hardhat testのようなステップを追加してください。高度なテストにはFoundry、マイグレーションスクリプトにはTruffleなどのツールを組み合わせます。InfuraまたはAlchemyを使用する場合は、環境変数でRPC URLを設定します(例:export GOERLI_RPC_URL=https://goerli.infura.io/v3/$INFURA_API_KEY)。互換性を確保するため、プロジェクト間でSolidityのバージョンを一致させてください。

エラー処理

コンパイルエラーが発生した場合は、コンソール出力でSolidityの問題を確認します。例:「ParserError: Expected token」の場合は、.solファイルの構文を修正してください。ネットワークエラーには、スクリプトでtry-catchを使用します。

try { await contract.deploy(); } catch (error) { console.error("Deployment failed:", error.message); process.exit(1); }

よくある問題:秘密鍵が無効な場合は、ethers.utils.isHexString(process.env.PRIVATE_KEY)で形式を確認してください。RPCの失敗時はURLを検証し、再試行を追加します。エラーチェックを行いながらhre.network.provider.send("eth_getBalance", [address])を使用してください。デバッグに備えて、エラーは必ずタイムスタンプとともに記録してください。

具体的な使用例

  1. 例:シンプルなコントラクトをセットアップしてコンパイルする
    プロジェクトを作成します。npx hardhat initを実行し、次の内容でcontracts/Greeter.solを追加します。

    pragma solidity ^0.8.0; contract Greeter { string public greeting; constructor() { greeting = "Hello"; } }
    

    次に、npx hardhat compileを実行してコンパイルします。これにより、artifacts/にアーティファクトが出力されます。

  2. 例:Goerliテストネットにデプロイする
    scripts/deploy.jsに次のように記述します。

    const hre = require("hardhat"); async function main() { const Greeter = await hre.ethers.deployContract("Greeter"); console.log("Deployed to:", await Greeter.getAddress()); } main();
    

    環境変数を設定します:export PRIVATE_KEY=0xYourKey && export GOERLI_RPC_URL=https://goerli.infura.io/v3/your-key。次を実行します:npx hardhat run scripts/deploy.js --network goerli。

グラフの関連性

  • 関連するタグ:ethereum、solidity、smart-contracts
  • クラスターの一部:blockchain
  • 埋め込みによる関連:development、testing、deployment

コメント