-
bitcoin $87959.907984 USD
1.34% -
ethereum $2920.497338 USD
3.04% -
tether $0.999775 USD
0.00% -
xrp $2.237324 USD
8.12% -
bnb $860.243768 USD
0.90% -
solana $138.089498 USD
5.43% -
usd-coin $0.999807 USD
0.01% -
tron $0.272801 USD
-1.53% -
dogecoin $0.150904 USD
2.96% -
cardano $0.421635 USD
1.97% -
hyperliquid $32.152445 USD
2.23% -
bitcoin-cash $533.301069 USD
-1.94% -
chainlink $12.953417 USD
2.68% -
unus-sed-leo $9.535951 USD
0.73% -
zcash $521.483386 USD
-2.87%
ハードハットを使用してスマートコントラクトをテストする方法は?
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ファイルを作成します。 - hardhat :
npm 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', };このセットアップを使用すると、 MochaとChaiを使用してテストを作成および実行する準備ができています。
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に代わるものはありますか? MochaとChaiは広く採用されていますが、 MochaとChaiのネイティブサポートとドキュメントはより成熟していますが、 Jestなどの他のテストフレームワークを追加の構成で統合できます。
免責事項:info@kdj.com
提供される情報は取引に関するアドバイスではありません。 kdj.com は、この記事で提供される情報に基づいて行われた投資に対して一切の責任を負いません。暗号通貨は変動性が高いため、十分な調査を行った上で慎重に投資することを強くお勧めします。
このウェブサイトで使用されているコンテンツが著作権を侵害していると思われる場合は、直ちに当社 (info@kdj.com) までご連絡ください。速やかに削除させていただきます。
- AI がペニー エラー ハンティングに革命を起こす: 隠されたコインの価値を解き放つ
- 2026-02-04 21:50:02
- ブロックチェーンの進化: ビットコインコアは新しいメンテナーを迎え、イーサリアムはERC-8004を探索し、L2sは前進
- 2026-02-04 21:45:01
- ウォール街の水晶玉: 市場変動の中での大手銀行の大胆なソラナ 2030 年予測
- 2026-02-04 22:15:02
- Chilizの価格が急上昇:ビジョン2030の青写真がCHZ向けの積極的な供給削減とSportFiの拡大を明らかに
- 2026-02-04 22:10:01
- ビットコインETFのジッター? 「資産暴落」の物語が的外れのため、スマート・キャピタルがハイパープレセールに殺到
- 2026-02-04 22:20:01
- ドージコインの不安定なダンス: ミームコインの狂乱における流動性と機会を乗り切る
- 2026-02-04 22:15:02
関連知識
感情と先物における「リベンジ取引」を管理する方法?
2026-02-05 00:19:32
先物市場における感情的なトリガーを理解する1. 市場のボラティリティは心理状態に直接影響を与え、急速な価格変動に基づいて恐怖や高揚感を増幅させることがよくあります。 2. 喪失は脳の脅威反応システムを活性化し、系統的な分析ではなく衝動的な決定を引き起こします。 3. ソーシャルメディアのフィードやグ...
出来高プロファイルを使用して主要な先物エントリーレベルを見つけるにはどうすればよいですか?
2026-02-04 23:39:35
ボリュームプロファイル構造の理解1. 出来高プロファイルは、定義された期間にわたる特定の価格レベルでの取引高の分布を表示し、チャート上に水平方向のヒストグラムを形成します。 2. コントロールポイント (POC) は、出来高集中が最も高い価格レベルを表し、多くの場合、価格反転の磁石として機能します。...
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層)
2026-02-04 22:20:05
VIP 階層の構造と資格基準1. 各主要仮想通貨取引所は段階的 VIP システムを実装しており、ユーザーは USD または同等のステーブルコイン価値で測定された 30 日間の累積取引量に基づいて資格を取得します。 2. ユーザーは上位層のロックを解除するには、プラットフォームのネイティブ トークンで...
スポットウォレットから先物口座に資金を移動するにはどうすればよいですか? (インスタントガイド)
2026-02-04 18:00:07
暗号通貨取引所におけるウォレットの分離について理解する1. スポットウォレットと先物口座は、ほとんどの集中型取引所内で独立した金融コンテナとして動作します。 2. スポットウォレットに保有されている資産を、信用取引や先物市場でのポジションオープンに直接使用することはできません。 3. これら 2 つ...
感情と先物における「リベンジ取引」を管理する方法?
2026-02-05 00:19:32
先物市場における感情的なトリガーを理解する1. 市場のボラティリティは心理状態に直接影響を与え、急速な価格変動に基づいて恐怖や高揚感を増幅させることがよくあります。 2. 喪失は脳の脅威反応システムを活性化し、系統的な分析ではなく衝動的な決定を引き起こします。 3. ソーシャルメディアのフィードやグ...
出来高プロファイルを使用して主要な先物エントリーレベルを見つけるにはどうすればよいですか?
2026-02-04 23:39:35
ボリュームプロファイル構造の理解1. 出来高プロファイルは、定義された期間にわたる特定の価格レベルでの取引高の分布を表示し、チャート上に水平方向のヒストグラムを形成します。 2. コントロールポイント (POC) は、出来高集中が最も高い価格レベルを表し、多くの場合、価格反転の磁石として機能します。...
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層)
2026-02-04 22:20:05
VIP 階層の構造と資格基準1. 各主要仮想通貨取引所は段階的 VIP システムを実装しており、ユーザーは USD または同等のステーブルコイン価値で測定された 30 日間の累積取引量に基づいて資格を取得します。 2. ユーザーは上位層のロックを解除するには、プラットフォームのネイティブ トークンで...
スポットウォレットから先物口座に資金を移動するにはどうすればよいですか? (インスタントガイド)
2026-02-04 18:00:07
暗号通貨取引所におけるウォレットの分離について理解する1. スポットウォレットと先物口座は、ほとんどの集中型取引所内で独立した金融コンテナとして動作します。 2. スポットウォレットに保有されている資産を、信用取引や先物市場でのポジションオープンに直接使用することはできません。 3. これら 2 つ...
すべての記事を見る














