-
bitcoin $78074.098354 USD
1.89% -
ethereum $2299.014391 USD
2.17% -
tether $0.998449 USD
0.01% -
bnb $700.460149 USD
1.26% -
xrp $1.273048 USD
1.81% -
usd-coin $0.999762 USD
0.01% -
solana $92.929882 USD
1.25% -
tron $0.321666 USD
0.30% -
zcash $1272.523101 USD
12.65% -
hyperliquid $84.856242 USD
1.58% -
monero $637.212844 USD
3.50% -
dogecoin $0.074680 USD
1.23% -
unus-sed-leo $9.292529 USD
-0.02% -
chainlink $11.063098 USD
-0.05% -
cardano $0.190385 USD
1.97%
ハードハットを使用してスマートコントラクトをテストする方法は?
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) までご連絡ください。速やかに削除させていただきます。
- 米国中間選挙、予測市場、仮想通貨レース: ワシントンの将来に対する一か八かの賭け
- 2026-11-04 04:30:22
- デジタル資産、グローバル金融、AI: DavosWeb3 以降の次のフロンティアをナビゲートする
- 2026-11-04 04:30:22
- 広範な市場苦境の中でAVAX価格が雪崩式に下落。機関の関心は依然として強い
- 2026-11-03 12:35:02
- なぜクオンツの価格は下がっているのでしょうか?市場不安の中での QNT の最近の下落を深く掘り下げる
- 2026-11-03 12:55:01
- Egrag CryptoのXRP価格チャート分析:「最大の波3」への準備はできていますか?
- 2026-11-03 01:15:01
- Bed Bath & Beyond の親会社、tZERO の 3 億 5,000 万ドルの評価額 SPAC 取引を支持: ニューヨーカーが知っておくべきこと
- 2026-11-03 01:15:01
関連知識
BTCUSDT先物ポジションを保有する総コストの計算方法
2026-10-26 04:06:35
BTCUSDT先物ポジションの総コスト構成要素1. BTCUSDT 先物ポジションを保持するための総コストには、明示的な料金と暗黙的な料金の両方が含まれます。明示的なコストは取引開始手数料と終了手数料で構成されますが、暗黙的なコストは主に、長期にわたる資金調達率の支払いまたは受け取りによって発生しま...
XRPSDT の資金調達レートと建玉を一緒に監視する方法
2026-10-20 18:39:42
XRPUSDT 無期限契約の資金調達率の仕組み1. XRPUSDT 無期限スワップの資金調達率は、XRP と USDT 建て融資市場の間のプレミアム インデックスと金利差を使用して 8 時間ごとに計算されます。 2. Binance、Bybit、OKX などの取引所は、デリバティブ API エンドポ...
SOLUSDT 無期限先物で損益分岐点ストップロスを設定する方法
2026-10-23 09:34:18
損益分岐点とストップロスの仕組みを理解する1. 損益分岐点ストップロスは、ポジションが有利に動くにつれて上方に調整され、約定時に純損失がゼロになるように固定する動的な注文です。 2. 取引が事前に定義された利益しきい値 (通常、初期リスクまたはエントリー手数料の 1 倍から 2 倍) に達した場合に...
ETHUSDT取引にBinance Futures Calculatorを使用する方法
2026-10-21 02:00:11
Binance Futures Calculator インターフェイスを理解する1. 計算機は Binance Futures 取引インターフェイス内に直接組み込まれており、注文入力パネルの ETHUSDT 無期限契約ページからアクセスできます。 2. ユーザーがポジションサイズ、エントリー価格、レ...
先物清算前にBTCUSDTマーク価格を確認する方法
2026-10-26 12:20:18
BTCUSDT 先物におけるマーク価格を理解する1. マーク価格は、市場環境が不安定な場合に不当清算を防止するために取引所が使用する計算値です。 2. 指標価格や調達率など、複数の情報源から導き出された公正かつ安定した参照価格を反映しています。 3. 前回の取引価格とは異なり、マーク価格には操作リス...
TRUMPUSDT 無期限契約のレバレッジを調整する方法
2026-10-30 22:19:37
TRUMPUSDT の無期限契約の仕組みを理解する1. TRUMPUSDT は、複数の Tier-1 デリバティブ取引所に上場されているテーマ別無期限先物契約であり、資産の基礎となるファンダメンタルズではなく、米国の政治的物語を中心とした価格センチメントを追跡するように設計されています。 2. プラ...
BTCUSDT先物ポジションを保有する総コストの計算方法
2026-10-26 04:06:35
BTCUSDT先物ポジションの総コスト構成要素1. BTCUSDT 先物ポジションを保持するための総コストには、明示的な料金と暗黙的な料金の両方が含まれます。明示的なコストは取引開始手数料と終了手数料で構成されますが、暗黙的なコストは主に、長期にわたる資金調達率の支払いまたは受け取りによって発生しま...
XRPSDT の資金調達レートと建玉を一緒に監視する方法
2026-10-20 18:39:42
XRPUSDT 無期限契約の資金調達率の仕組み1. XRPUSDT 無期限スワップの資金調達率は、XRP と USDT 建て融資市場の間のプレミアム インデックスと金利差を使用して 8 時間ごとに計算されます。 2. Binance、Bybit、OKX などの取引所は、デリバティブ API エンドポ...
SOLUSDT 無期限先物で損益分岐点ストップロスを設定する方法
2026-10-23 09:34:18
損益分岐点とストップロスの仕組みを理解する1. 損益分岐点ストップロスは、ポジションが有利に動くにつれて上方に調整され、約定時に純損失がゼロになるように固定する動的な注文です。 2. 取引が事前に定義された利益しきい値 (通常、初期リスクまたはエントリー手数料の 1 倍から 2 倍) に達した場合に...
ETHUSDT取引にBinance Futures Calculatorを使用する方法
2026-10-21 02:00:11
Binance Futures Calculator インターフェイスを理解する1. 計算機は Binance Futures 取引インターフェイス内に直接組み込まれており、注文入力パネルの ETHUSDT 無期限契約ページからアクセスできます。 2. ユーザーがポジションサイズ、エントリー価格、レ...
先物清算前にBTCUSDTマーク価格を確認する方法
2026-10-26 12:20:18
BTCUSDT 先物におけるマーク価格を理解する1. マーク価格は、市場環境が不安定な場合に不当清算を防止するために取引所が使用する計算値です。 2. 指標価格や調達率など、複数の情報源から導き出された公正かつ安定した参照価格を反映しています。 3. 前回の取引価格とは異なり、マーク価格には操作リス...
TRUMPUSDT 無期限契約のレバレッジを調整する方法
2026-10-30 22:19:37
TRUMPUSDT の無期限契約の仕組みを理解する1. TRUMPUSDT は、複数の Tier-1 デリバティブ取引所に上場されているテーマ別無期限先物契約であり、資産の基礎となるファンダメンタルズではなく、米国の政治的物語を中心とした価格センチメントを追跡するように設計されています。 2. プラ...
すべての記事を見る














