時価総額: $2.1862T -0.10%
ボリューム(24時間): $65.0919B 2.38%
恐怖と貪欲の指数:

38 - 恐れ

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

言語を選択する

言語を選択する

通貨の選択

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

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

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) までご連絡ください。速やかに削除させていただきます。

関連知識

取引前にLINK先物清算リスクを計算するにはどうすればよいですか?

取引前にLINK先物清算リスクを計算するにはどうすればよいですか?

2026-07-30 04:39:50

市場のボラティリティパターン1. Bitcoin の価格変動は、米国のインフレ報告や連邦準備理事会の金利決定などのマクロ経済指標と相関することがよくあります。 2. アルトコインの評価は、投機的行動の高まりを反映して、Bitcoin の優位性が低い期間に増幅された変動を頻繁に示します。 3. 上場投...

LINKUSDT 無期限契約のファンディング レートとは何ですか?

LINKUSDT 無期限契約のファンディング レートとは何ですか?

2026-07-29 07:40:14

市場のボラティリティパターン1. Bitcoin の価格変動は、ETF の承認発表や大規模な取引所の停止などの流動性の高いイベント中に、24 時間以内に 10% を超えることがよくあります。 2. イーサリアムのボラティリティ指数は、レイヤー 2 ロールアップ アップグレードが開始されると、特に導入...

AVAX 先物証拠金要件はどのように計算されますか?

AVAX 先物証拠金要件はどのように計算されますか?

2026-07-23 15:40:03

AVAX先物証拠金構造1. AVAX 先物証拠金は、当初証拠金と維持証拠金という 2 つの異なる要素で構成されます。これらは、現在の市場価格、ボラティリティ、建玉、契約サイズに基づいてリアルタイムで計算されます。 2. 当初証拠金は、短期間(通常は 1 回の取引セッション)にわたる潜在的な不利な価格...

ADA 無期限先物の最大レバレッジはいくらですか?

ADA 無期限先物の最大レバレッジはいくらですか?

2026-07-28 07:40:32

ADA 無期限先物のレバレッジは、管轄区域、ユーザー層、リスク管理ポリシーに応じて取引所ごとに異なります。 2026 年 7 月の時点で、主要なプラットフォームでは個別の上限が適用されています。取引所固有の ADA レバレッジ制限1. Binance Futures は、ADA/USDT 無期限契約...

ADA 契約マージン率によって警告がトリガーされるのはなぜですか?

ADA 契約マージン率によって警告がトリガーされるのはなぜですか?

2026-07-22 09:00:26

ADA 契約マージン率の仕組み1. 主要取引所の ADA 無期限契約では、ポジション サイズ、レバレッジ レベル、および現在のマーク価格に基づいてリアルタイムで計算される動的証拠金比率が使用されます。 2. 証拠金率は、(ウォレット残高 + 未実現損益) を維持証拠金要件で割ったものに等しく、パーセ...

ADA 先物清算価格の計算方法

ADA 先物清算価格の計算方法

2026-07-30 09:00:28

ADA 先物証拠金の仕組みを理解する1. 主要取引所の ADA 先物契約は、分離モードまたはクロスマージン モードで運用され、清算閾値に異なる影響を与えます。分離マージンはポジションごとに専用の資本を割り当てますが、クロスマージンはウォレット残高全体から引き出します。 2. ADA 先物に対する当初...

取引前にLINK先物清算リスクを計算するにはどうすればよいですか?

取引前にLINK先物清算リスクを計算するにはどうすればよいですか?

2026-07-30 04:39:50

市場のボラティリティパターン1. Bitcoin の価格変動は、米国のインフレ報告や連邦準備理事会の金利決定などのマクロ経済指標と相関することがよくあります。 2. アルトコインの評価は、投機的行動の高まりを反映して、Bitcoin の優位性が低い期間に増幅された変動を頻繁に示します。 3. 上場投...

LINKUSDT 無期限契約のファンディング レートとは何ですか?

LINKUSDT 無期限契約のファンディング レートとは何ですか?

2026-07-29 07:40:14

市場のボラティリティパターン1. Bitcoin の価格変動は、ETF の承認発表や大規模な取引所の停止などの流動性の高いイベント中に、24 時間以内に 10% を超えることがよくあります。 2. イーサリアムのボラティリティ指数は、レイヤー 2 ロールアップ アップグレードが開始されると、特に導入...

AVAX 先物証拠金要件はどのように計算されますか?

AVAX 先物証拠金要件はどのように計算されますか?

2026-07-23 15:40:03

AVAX先物証拠金構造1. AVAX 先物証拠金は、当初証拠金と維持証拠金という 2 つの異なる要素で構成されます。これらは、現在の市場価格、ボラティリティ、建玉、契約サイズに基づいてリアルタイムで計算されます。 2. 当初証拠金は、短期間(通常は 1 回の取引セッション)にわたる潜在的な不利な価格...

ADA 無期限先物の最大レバレッジはいくらですか?

ADA 無期限先物の最大レバレッジはいくらですか?

2026-07-28 07:40:32

ADA 無期限先物のレバレッジは、管轄区域、ユーザー層、リスク管理ポリシーに応じて取引所ごとに異なります。 2026 年 7 月の時点で、主要なプラットフォームでは個別の上限が適用されています。取引所固有の ADA レバレッジ制限1. Binance Futures は、ADA/USDT 無期限契約...

ADA 契約マージン率によって警告がトリガーされるのはなぜですか?

ADA 契約マージン率によって警告がトリガーされるのはなぜですか?

2026-07-22 09:00:26

ADA 契約マージン率の仕組み1. 主要取引所の ADA 無期限契約では、ポジション サイズ、レバレッジ レベル、および現在のマーク価格に基づいてリアルタイムで計算される動的証拠金比率が使用されます。 2. 証拠金率は、(ウォレット残高 + 未実現損益) を維持証拠金要件で割ったものに等しく、パーセ...

ADA 先物清算価格の計算方法

ADA 先物清算価格の計算方法

2026-07-30 09:00:28

ADA 先物証拠金の仕組みを理解する1. 主要取引所の ADA 先物契約は、分離モードまたはクロスマージン モードで運用され、清算閾値に異なる影響を与えます。分離マージンはポジションごとに専用の資本を割り当てますが、クロスマージンはウォレット残高全体から引き出します。 2. ADA 先物に対する当初...

すべての記事を見る

User not found or password invalid

Your input is correct