時価総額: $2.1607T 1.76%
ボリューム(24時間): $86.9861B 19.97%
恐怖と貪欲の指数:

15 - 極度の恐怖

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

言語を選択する

言語を選択する

通貨の選択

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

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

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

関連知識

Bybit で BTC 取引を行う場合、リニア永久契約とインバース永久契約のどちらを選択すればよいですか?

Bybit で BTC 取引を行う場合、リニア永久契約とインバース永久契約のどちらを選択すればよいですか?

2026-06-06 02:54:55

契約決済の仕組み1. Bybit のリニア無期限契約は USDT で決済されます。これは、すべての損益計算、証拠金要件、清算閾値がステーブルコイン単位で表示されることを意味します。 2. 逆永久契約は BTC 自体で決済されるため、すべての取引はトレーダーの BTC 残高に直接影響します。利益があれ...

ストップハントやなりすましなどの先物市場操作を特定して回避するにはどうすればよいでしょうか?

ストップハントやなりすましなどの先物市場操作を特定して回避するにはどうすればよいでしょうか?

2026-06-07 14:20:10

Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の半減期の時点で...

Bybit で 1 日の最大損失を制限するリスク管理ルールを設定するにはどうすればよいですか?

Bybit で 1 日の最大損失を制限するリスク管理ルールを設定するにはどうすればよいですか?

2026-06-04 16:40:15

アカウントレベルの損失制限の設定1. 2 要素認証を使用して、Web またはモバイル アプリケーション経由で Bybit アカウントにログインします。 2. 「資産」セクションに移動し、左側のメニューから「リスク管理」を選択します。 3. 「日次損失制限」を選択し、機能をオンに切り替えてコントロール...

Binance でポートフォリオ証拠金モードを有効にして証拠金要件を減らすにはどうすればよいですか?

Binance でポートフォリオ証拠金モードを有効にして証拠金要件を減らすにはどうすればよいですか?

2026-06-05 04:59:43

Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、ブロックごとに流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の...

オープン先物ポジションをクローズせずに Binance から Bybit に移行するにはどうすればよいですか?

オープン先物ポジションをクローズせずに Binance から Bybit に移行するにはどうすればよいですか?

2026-06-04 03:59:47

Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の半減期の時点で...

米国における仮想通貨先物取引の利益による税金への影響をどのように処理すればよいでしょうか?

米国における仮想通貨先物取引の利益による税金への影響をどのように処理すればよいでしょうか?

2026-05-29 18:19:59

Bitcoin 半減力学1. Bitcoin のプロトコルでは、ブロック報酬を通じて新しいユニットが導入され、2,100 万コインの固定供給上限が強制されます。 2. 210,000 ブロックごと、つまり約 4 年ごとに、ブロック報酬は半分に減ります。これは半減として知られるプロセスです。 3. 最...

Bybit で BTC 取引を行う場合、リニア永久契約とインバース永久契約のどちらを選択すればよいですか?

Bybit で BTC 取引を行う場合、リニア永久契約とインバース永久契約のどちらを選択すればよいですか?

2026-06-06 02:54:55

契約決済の仕組み1. Bybit のリニア無期限契約は USDT で決済されます。これは、すべての損益計算、証拠金要件、清算閾値がステーブルコイン単位で表示されることを意味します。 2. 逆永久契約は BTC 自体で決済されるため、すべての取引はトレーダーの BTC 残高に直接影響します。利益があれ...

ストップハントやなりすましなどの先物市場操作を特定して回避するにはどうすればよいでしょうか?

ストップハントやなりすましなどの先物市場操作を特定して回避するにはどうすればよいでしょうか?

2026-06-07 14:20:10

Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の半減期の時点で...

Bybit で 1 日の最大損失を制限するリスク管理ルールを設定するにはどうすればよいですか?

Bybit で 1 日の最大損失を制限するリスク管理ルールを設定するにはどうすればよいですか?

2026-06-04 16:40:15

アカウントレベルの損失制限の設定1. 2 要素認証を使用して、Web またはモバイル アプリケーション経由で Bybit アカウントにログインします。 2. 「資産」セクションに移動し、左側のメニューから「リスク管理」を選択します。 3. 「日次損失制限」を選択し、機能をオンに切り替えてコントロール...

Binance でポートフォリオ証拠金モードを有効にして証拠金要件を減らすにはどうすればよいですか?

Binance でポートフォリオ証拠金モードを有効にして証拠金要件を減らすにはどうすればよいですか?

2026-06-05 04:59:43

Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、ブロックごとに流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の...

オープン先物ポジションをクローズせずに Binance から Bybit に移行するにはどうすればよいですか?

オープン先物ポジションをクローズせずに Binance から Bybit に移行するにはどうすればよいですか?

2026-06-04 03:59:47

Bitcoin 半減力学1. Bitcoin のプロトコルは、ブロック報酬が約 210,000 ブロックごとに半分になる固定発行スケジュールを強制します。 2. このイベントはおよそ 4 年ごとに発生し、流通する新しい BTC の数を直接減少させます。 3. マイナーは、2020 年の半減期の時点で...

米国における仮想通貨先物取引の利益による税金への影響をどのように処理すればよいでしょうか?

米国における仮想通貨先物取引の利益による税金への影響をどのように処理すればよいでしょうか?

2026-05-29 18:19:59

Bitcoin 半減力学1. Bitcoin のプロトコルでは、ブロック報酬を通じて新しいユニットが導入され、2,100 万コインの固定供給上限が強制されます。 2. 210,000 ブロックごと、つまり約 4 年ごとに、ブロック報酬は半分に減ります。これは半減として知られるプロセスです。 3. 最...

すべての記事を見る

User not found or password invalid

Your input is correct