時価総額: $2.585T -2.36%
ボリューム(24時間): $167.5827B 6.93%
恐怖と貪欲の指数:

17 - 極度の恐怖

  • 時価総額: $2.585T -2.36%
  • ボリューム(24時間): $167.5827B 6.93%
  • 恐怖と貪欲の指数:
  • 時価総額: $2.585T -2.36%
暗号
トピック
暗号化
ニュース
暗号造園
動画
トップクリプトスペディア

言語を選択する

言語を選択する

通貨の選択

暗号
トピック
暗号化
ニュース
暗号造園
動画

ハードハットを使用してスマートコントラクトをテストする方法は?

Hardhat is an Ethereum development environment that streamlines smart contract testing with tools like Mocha and Chai, ensuring reliable deployment.

2025/07/26 23:15

Hardhatとは何ですか?また、なぜスマートコントラクトテストに使用するのですか?

Hardhatは、開発者がスマートコントラクトを効率的にコンパイル、展開、デバッグ、およびテストできるイーサリアム開発環境です。 HardHatネットワークとして知られるローカルブロックチェーン環境を提供し、MainNetやRopstenなどの実際のイーサリアムネットワークの動作を模倣しており、テスト目的に最適です。

開発者がHardhatを好む主な理由の1つは、その柔軟性とリッチプラグインのエコシステムです。 Mochaでユニットテストを書いたり、AssertionにChaiを使用したり、組み込みのツールを使用してデバッグしたりするかどうかにかかわらず、 Hardhatはスマートコントラクト開発ライフサイクル全体を合理化します。これにより、ライブネットワークに展開する前に契約ロジックが正しく動作するようにする場合に特に便利になります。

開発環境を設定します

テストに飛び込む前に、適切な環境を設定することが不可欠です。

  • node.jsをインストールnode.js (バージョン14.x以下)とNPMがインストールされていることを確認してください。
  • プロジェクトの初期化:プロジェクトディレクトリでnpm init -y実行して、 package.jsonファイルを作成します。
  • hardhatnpm install --save-dev hardhatを実行するには、プロジェクトにhardhatを追加します。
  • hardhat構成ファイルの作成npx hardhatを実行し、「JavaScriptプロジェクトの作成」を選択して、 hardhat.config.jsファイルを生成します。

このセットアップが完了したら、スマートコントラクトの書き込みとテストを開始できます。

テスト用の基本的なスマートコントラクトを作成します

テストにHardhatを使用する方法を示すために、単純な堅実さ契約を考えてみましょう。

 // contracts/Token.sol pragma solidity ^0.8.0;契約token {




mapping(address => uint256) public balances; function transfer(address to, uint256 amount) external { require(balances[msg.sender] >= amount, 'Insufficient balance'); balances[msg.sender] -= amount; balances[to] += amount; } function mint(address account, uint256 amount) external { balances[account] += amount; }

}

この基本的なトークン契約には、トークンを転送およびミントするための関数が含まれます。目標は、 HardHatのテストフレームワークを使用して、さまざまなシナリオでこれらの関数が予想どおりに動作するかどうかをテストすることです。

テスト環境の構成

テストを作成する前に、プロジェクト構造がテストをサポートしていることを確認してください。

  • 堅実さ契約をcontracts/フォルダーに配置します。
  • test/ディレクトリにテストファイルを保存します。
  • 必要に応じてhardhat.config.js更新します(たとえば、ネットワークやプラグインの追加)。

最小限の構成例は次のとおりです。

 // hardhat.config.js module.exports = { solidity: '0.8.0', };

このセットアップを使用すると、 MochaChaiを使用してテストを作成および実行する準備ができています。

MochaとChaiを使用したテストを作成します

Hardhatは、人気のJavaScriptテストフレームワークであるMochaと、アサーションライブラリであるChaiとシームレスに統合します。

test/ディレクトリでテストファイルを作成することから始めます。

 // test/token-test.js const { expect } = require('chai');説明( 'トークン契約'、function(){ トークンさせてください。 Hardhattokenをさせてください。 所有者にしましょう。 addr1としましょう。




前に(async function(){

Token = await ethers.getContractFactory('Token'); [owner, addr1] = await ethers.getSigners(); hardhatToken = await Token.deploy(); await hardhatToken.deployed();

});

それ( '総供給を所有者に割り当てる必要があります'、async function(){

await hardhatToken.mint(owner.address, 100); const ownerBalance = await hardhatToken.balances(owner.address); expect(ownerBalance).to.equal(100);

});

それ( 'アカウント間でトークンを転送する必要があります'、async function(){

await hardhatToken.mint(owner.address, 100); await hardhatToken.transfer(addr1.address, 50); const addr1Balance = await hardhatToken.balances(addr1.address); expect(addr1Balance).to.equal(50);

});

それは( '送信者が十分なトークンを持っていない場合に失敗するはずです'、async function(){

const initialOwnerBalance = await hardhatToken.balances(owner.address); await expect( hardhatToken.transfer(addr1.address, 1) ).to.be.revertedWith('Insufficient balance'); expect(await hardhatToken.balances(owner.address)).to.equal(initialOwnerBalance);

}); });

各テストケースはCHAIを使用して、予想される結果を主張します。 beforeEachフックは、すべてのテストの新たな展開を保証し、テストケース間の干渉を防ぎます。

Hardhatでテストを実行します

テストが書かれたら、それらを実行するのは簡単です。

  • プロジェクトルートディレクトリで端末を開きます。
  • コマンドnpx hardhat testを実行します。

出力には、合格したケースや故障したケースを含む各テストの結果が表示されます。テストが失敗した場合、 Hardhatは詳細なエラーメッセージを表示して、問題を迅速に識別するのに役立ちます。

より詳細な制御のために、ファイルパスを追加して特定のテストファイルを実行できます。

 npx hardhat test test/token-test.js

これにより、テストスイート全体を再実行することなく、特定の契約行動に集中できます。


よくある質問

Q:堅牢性なしでHardhatを使用できますか?はい、 Hardhatは主に堅牢性のために設計されていますが、コミュニティのサポートは異なる場合がありますが、 Vyperなどの他のEVM互換言語でも使用できます。

Q:ハードハットで失敗したテストをデバッグするにはどうすればよいですか? @nomiclabs/hardhat-waffleまたはhardhatランタイム環境(HRE)console.logを使用して、テスト実行中に変数値を印刷します。さらに、トランザクションの領収書を検査し、テスト出力で提供された理由を戻します。

Q:hardhatを使用して契約アップグレードをテストできますか?はい、 hardhatは@openzeppelin/hardhatアップグレードなどのプラグインを介してプロキシパターンをサポートしているため、アップグレード可能な契約をローカルでシミュレートしてテストできます。

Q:HardhatでテストするためのMochaとChaiに代わるものはありますか? MochaChaiは広く採用されていますが、 MochaChaiのネイティブサポートとドキュメントはより成熟していますが、 Jestなどの他のテストフレームワークを追加の構成で統合できます。

免責事項:info@kdj.com

提供される情報は取引に関するアドバイスではありません。 kdj.com は、この記事で提供される情報に基づいて行われた投資に対して一切の責任を負いません。暗号通貨は変動性が高いため、十分な調査を行った上で慎重に投資することを強くお勧めします。

このウェブサイトで使用されているコンテンツが著作権を侵害していると思われる場合は、直ちに当社 (info@kdj.com) までご連絡ください。速やかに削除させていただきます。

関連知識

TradingViewアラートを使用して先物取引を自動的に実行するにはどうすればよいですか?

TradingViewアラートを使用して先物取引を自動的に実行するにはどうすればよいですか?

2026-02-04 21:00:31

先物契約のTradingViewアラートの設定1. TradingView アカウントにログインし、Binance または Bybit の BTC/USD または ETH/USD 無期限など、目的の先物商品のチャートを開きます。 2. 好みのインジケーター、ローソク足の時間枠、描画ツールを使用してチ...

先物取引でワンウェイ モードとヘッジ モードを使い分けるにはどうすればよいですか?

先物取引でワンウェイ モードとヘッジ モードを使い分けるにはどうすればよいですか?

2026-02-04 18:19:57

一方向モードについて1. 一方向モードでは、いつでも資産ごとに単一のポジション方向 (ロングまたはショート) が確立されます。 2. トレーダーは同じシンボルで反対のポジションを保持できないため、証拠金の計算とリスクエクスポージャの追跡が簡素化されます。 3. 初期証拠金は、オープンポジションの想定...

暗号通貨取引所契約の取引手数料を削減するにはどうすればよいですか? (VIP層)

暗号通貨取引所契約の取引手数料を削減するにはどうすればよいですか? (VIP層)

2026-02-04 22:20:05

VIP 階層の構造と資格基準1. 各主要仮想通貨取引所は段階的 VIP システムを実装しており、ユーザーは USD または同等のステーブルコイン価値で測定された 30 日間の累積取引量に基づいて資格を取得します。 2. ユーザーは上位層のロックを解除するには、プラットフォームのネイティブ トークンで...

スポットウォレットから先物口座に資金を移動するにはどうすればよいですか? (インスタントガイド)

スポットウォレットから先物口座に資金を移動するにはどうすればよいですか? (インスタントガイド)

2026-02-04 18:00:07

暗号通貨取引所におけるウォレットの分離について理解する1. スポットウォレットと先物口座は、ほとんどの集中型取引所内で独立した金融コンテナとして動作します。 2. スポットウォレットに保有されている資産を、信用取引や先物市場でのポジションオープンに直接使用することはできません。 3. これら 2 つ...

暗号通貨契約ポジションを手動または自動でクローズするにはどうすればよいですか?

暗号通貨契約ポジションを手動または自動でクローズするにはどうすればよいですか?

2026-02-01 23:19:36

手動ポジション決済プロセス1. 契約が有効な取引プラットフォームにログインし、「ポジション」または「オープンオーダー」タブに移動します。 2. シンボル、サイズ、エントリー価格、レバレッジレベルを確認して、特定の契約ポジションを見つけます。 3. ポジションの横にある「クローズ」または「清算」ボタン...

Bitcoin ETF が暗号通貨契約に与える影響を理解するにはどうすればよいですか?

Bitcoin ETF が暗号通貨契約に与える影響を理解するにはどうすればよいですか?

2026-02-01 16:19:51

Bitcoin ETF と市場の流動性1. Bitcoin ETF は機関資本をスポット市場に直接導入し、オーダーブックの厚みを増し、大規模取引のスリッページを減らします。 2. 裁定取引者が先物や永久スワップを使用して ETF ポジションをヘッジするため、流動性の向上はデリバティブ市場にも波及しま...

TradingViewアラートを使用して先物取引を自動的に実行するにはどうすればよいですか?

TradingViewアラートを使用して先物取引を自動的に実行するにはどうすればよいですか?

2026-02-04 21:00:31

先物契約のTradingViewアラートの設定1. TradingView アカウントにログインし、Binance または Bybit の BTC/USD または ETH/USD 無期限など、目的の先物商品のチャートを開きます。 2. 好みのインジケーター、ローソク足の時間枠、描画ツールを使用してチ...

先物取引でワンウェイ モードとヘッジ モードを使い分けるにはどうすればよいですか?

先物取引でワンウェイ モードとヘッジ モードを使い分けるにはどうすればよいですか?

2026-02-04 18:19:57

一方向モードについて1. 一方向モードでは、いつでも資産ごとに単一のポジション方向 (ロングまたはショート) が確立されます。 2. トレーダーは同じシンボルで反対のポジションを保持できないため、証拠金の計算とリスクエクスポージャの追跡が簡素化されます。 3. 初期証拠金は、オープンポジションの想定...

暗号通貨取引所契約の取引手数料を削減するにはどうすればよいですか? (VIP層)

暗号通貨取引所契約の取引手数料を削減するにはどうすればよいですか? (VIP層)

2026-02-04 22:20:05

VIP 階層の構造と資格基準1. 各主要仮想通貨取引所は段階的 VIP システムを実装しており、ユーザーは USD または同等のステーブルコイン価値で測定された 30 日間の累積取引量に基づいて資格を取得します。 2. ユーザーは上位層のロックを解除するには、プラットフォームのネイティブ トークンで...

スポットウォレットから先物口座に資金を移動するにはどうすればよいですか? (インスタントガイド)

スポットウォレットから先物口座に資金を移動するにはどうすればよいですか? (インスタントガイド)

2026-02-04 18:00:07

暗号通貨取引所におけるウォレットの分離について理解する1. スポットウォレットと先物口座は、ほとんどの集中型取引所内で独立した金融コンテナとして動作します。 2. スポットウォレットに保有されている資産を、信用取引や先物市場でのポジションオープンに直接使用することはできません。 3. これら 2 つ...

暗号通貨契約ポジションを手動または自動でクローズするにはどうすればよいですか?

暗号通貨契約ポジションを手動または自動でクローズするにはどうすればよいですか?

2026-02-01 23:19:36

手動ポジション決済プロセス1. 契約が有効な取引プラットフォームにログインし、「ポジション」または「オープンオーダー」タブに移動します。 2. シンボル、サイズ、エントリー価格、レバレッジレベルを確認して、特定の契約ポジションを見つけます。 3. ポジションの横にある「クローズ」または「清算」ボタン...

Bitcoin ETF が暗号通貨契約に与える影響を理解するにはどうすればよいですか?

Bitcoin ETF が暗号通貨契約に与える影響を理解するにはどうすればよいですか?

2026-02-01 16:19:51

Bitcoin ETF と市場の流動性1. Bitcoin ETF は機関資本をスポット市場に直接導入し、オーダーブックの厚みを増し、大規模取引のスリッページを減らします。 2. 裁定取引者が先物や永久スワップを使用して ETF ポジションをヘッジするため、流動性の向上はデリバティブ市場にも波及しま...

すべての記事を見る

User not found or password invalid

Your input is correct