-
Bitcoin
$118000
0.67% -
Ethereum
$3750
0.71% -
XRP
$3.183
1.61% -
Tether USDt
$1.000
-0.01% -
BNB
$788.1
1.21% -
Solana
$186.0
0.85% -
USDC
$0.9999
-0.02% -
Dogecoin
$0.2373
1.25% -
TRON
$0.3204
1.76% -
Cardano
$0.8266
1.85% -
Hyperliquid
$44.04
1.28% -
Sui
$4.192
5.88% -
Stellar
$0.4399
2.63% -
Chainlink
$18.40
1.19% -
Hedera
$0.2842
9.06% -
Bitcoin Cash
$560.5
2.46% -
Avalanche
$24.99
4.58% -
Litecoin
$114.5
1.25% -
UNUS SED LEO
$8.980
-0.03% -
Shiba Inu
$0.00001406
0.53% -
Toncoin
$3.306
4.27% -
Ethena USDe
$1.001
0.03% -
Polkadot
$4.169
2.37% -
Uniswap
$10.56
1.95% -
Monero
$322.8
1.06% -
Dai
$0.0000
0.00% -
Bitget Token
$4.545
0.12% -
Pepe
$0.00001261
1.29% -
Aave
$296.5
1.27% -
Cronos
$0.1379
5.90%
ハードハットを使用してスマートコントラクトをテストする方法は?
Hardhatは、MochaやChaiなどのツールでスマートコントラクトテストを合理化し、信頼できる展開を確保するイーサリアム開発環境です。
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
契約token {
pragma solidity ^0.8.0;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
説明( 'トークン契約'、function(){
const { expect } = require('chai');
トークンさせてください。
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) までご連絡ください。速やかに削除させていただきます。
- XRP価格チェック:Altcoin Buzz and Ripple Investorsの2026年の希望
- 2025-07-27 08:30:12
- BlackRock、Stablecoins、およびInstitutional Infrastructure:ニューヨークの視点
- 2025-07-27 08:30:12
- PIネットワーク:流動性の課題とバイナンスリストの推測に悩まされているメインネットの移行
- 2025-07-27 09:10:13
- 清崎の暗号コール:金と銀でビットコインクラッシュをナビゲートする
- 2025-07-27 09:10:13
- ビットコイン、Uniswap、avalanche:ニューヨークの心の状態で暗号波に乗る
- 2025-07-27 09:30:12
- Troller Cat、Meme Coins、Community Tokenomics:新しい時代?
- 2025-07-27 09:35:12
関連知識

なぜ私のビットスタンプ先物の位置が清算されているのですか?
2025-07-23 11:08:15
ビットスタンプでの先物の清算を理解するビットスタンプでの先物取引には、資金を借りてレバレッジされたポジションを開くことが含まれ、潜在的な利益とリスクの両方を増幅します。マージンバランスが必要なメンテナンスのしきい値を下回ると、BitStampは借りた金額をカバーする清算プロセスを開始します。これは、...

BitStampは逆契約を提供しますか?
2025-07-23 13:28:52
暗号通貨取引における逆契約の理解暗号通貨デリバティブの領域では、逆契約は、定住と担保が、スタブコインやフィアット通貨ではなく、 BTCやETHなどの基本的な暗号通貨で宗派されている特定のタイプの未来または永続的な契約です。これは、トレーダーが逆契約でポジションを開くと、彼らの利益と損失(P&L)が基...

ビットスタンプの先物と永久の違いは何ですか?
2025-07-27 05:08:19
ビットスタンプで先物契約を理解するビットスタンプの先物契約は、トレーダーが所定の価格と日付でBitcoinやイーサリアムなどの暗号通貨の将来の価格を推測できるようにする金融デリバティブです。これらの契約の有効期限は固定されています。つまり、将来の特定の日に落ち着きます。先物契約が期限切れになると、ポ...

あなたのビットスタンプ先物の取引履歴を見つける方法は?
2025-07-23 08:07:56
ビットスタンプと先物取引の可用性を理解するBitStampのサービス提供の現在の状態の時点で、 BitStampが先物取引をサポートしていないことを明確にすることが重要です。このプラットフォームは、主にスポット暗号通貨交換として機能し、ユーザーがBitcoin、イーサリアム、その他の主要な暗号通貨な...

ビットスタンプ先物でトレーリングストップを使用できますか?
2025-07-23 13:42:32
暗号通貨取引におけるトレーリングストップの理解トレーリングストップは、資産の価格が好ましい方向に移動すると自動的に調整される動的なタイプのストップロス順序です。設定された価格レベルに固定された標準のストップロスとは異なり、後部の停留所は、指定された割合またはドルの金額で市場価格に従います。これにより...

ビットスタンプ先物でトレーリングストップを使用できますか?
2025-07-25 02:28:47
暗号通貨先物取引におけるトレーリングストップの理解トレーリングストップは、市場価格が好ましい方向に移動するにつれて自動的に調整される動的なタイプのストップロス順序です。設定された価格で固定された標準のストップロスとは異なり、トレーリングストップは、定義された割合またはドル距離で資産の価格に従います。...

なぜ私のビットスタンプ先物の位置が清算されているのですか?
2025-07-23 11:08:15
ビットスタンプでの先物の清算を理解するビットスタンプでの先物取引には、資金を借りてレバレッジされたポジションを開くことが含まれ、潜在的な利益とリスクの両方を増幅します。マージンバランスが必要なメンテナンスのしきい値を下回ると、BitStampは借りた金額をカバーする清算プロセスを開始します。これは、...

BitStampは逆契約を提供しますか?
2025-07-23 13:28:52
暗号通貨取引における逆契約の理解暗号通貨デリバティブの領域では、逆契約は、定住と担保が、スタブコインやフィアット通貨ではなく、 BTCやETHなどの基本的な暗号通貨で宗派されている特定のタイプの未来または永続的な契約です。これは、トレーダーが逆契約でポジションを開くと、彼らの利益と損失(P&L)が基...

ビットスタンプの先物と永久の違いは何ですか?
2025-07-27 05:08:19
ビットスタンプで先物契約を理解するビットスタンプの先物契約は、トレーダーが所定の価格と日付でBitcoinやイーサリアムなどの暗号通貨の将来の価格を推測できるようにする金融デリバティブです。これらの契約の有効期限は固定されています。つまり、将来の特定の日に落ち着きます。先物契約が期限切れになると、ポ...

あなたのビットスタンプ先物の取引履歴を見つける方法は?
2025-07-23 08:07:56
ビットスタンプと先物取引の可用性を理解するBitStampのサービス提供の現在の状態の時点で、 BitStampが先物取引をサポートしていないことを明確にすることが重要です。このプラットフォームは、主にスポット暗号通貨交換として機能し、ユーザーがBitcoin、イーサリアム、その他の主要な暗号通貨な...

ビットスタンプ先物でトレーリングストップを使用できますか?
2025-07-23 13:42:32
暗号通貨取引におけるトレーリングストップの理解トレーリングストップは、資産の価格が好ましい方向に移動すると自動的に調整される動的なタイプのストップロス順序です。設定された価格レベルに固定された標準のストップロスとは異なり、後部の停留所は、指定された割合またはドルの金額で市場価格に従います。これにより...

ビットスタンプ先物でトレーリングストップを使用できますか?
2025-07-25 02:28:47
暗号通貨先物取引におけるトレーリングストップの理解トレーリングストップは、市場価格が好ましい方向に移動するにつれて自動的に調整される動的なタイプのストップロス順序です。設定された価格で固定された標準のストップロスとは異なり、トレーリングストップは、定義された割合またはドル距離で資産の価格に従います。...
すべての記事を見る
