見出し画像

Hardhat入門③-2(プロジェクトを作る) ~ブロックチェーンエンジニアになろう~

では、前回の続きとして、Hardhat公式の第三章の続きから始めていきます。

Hardhat 公式


なぜ、分けたのかと言いますと、ここから重要なことが書かれているからです。

Hardhatのアーキテクチャ(基本設計)について書かれています。

Hardhatは次の大きな2つの柱でできています。

① タスク
② プラグイン

①タスクについて

タスクとはHardhatを使って、何ができるかということです。

具体的には

npx hardhat ○○(タスク名)

とすることで、やりたい処理が実行できます。

そして、どんなタスクがあるの?と調べたい時は

npx hardhat

を実行します。

すると、このような画面になります。

スクリーンショット 2021-12-08 5.59.49

この、下に書かれている「Available Tasks」という処理が実行することができるタスクです。

後に出てくる

npx hardhat compileと

という処理ができるのは、このtaskに書かれているからなのですね。


② プラグインについて

プラグインはなんとなくイメージがつくかもしれません。

いわゆる色々な機能を取り込むことです。

Hardhatは色々な外の機能を取り込むことを前提に設計がなされているのですね。

特に次の2つはよく利用されます。
①Ethers.js
②Waffle

では実際にプラグインを入れてみましょう。

ターミナルで次を打ってみます。

npm install --save-dev @nomiclabs/hardhat-ethers ethers @nomiclabs/hardhat-waffle ethereum-waffle chai

 ​なんだか難しそうですが、結局はただのインストールです。

① @nomiclabs/hardhat-ethers にある ethers

② @nomiclabs/hardhat-waffle にある ethereum-waffle と chai

をインストールしてくださいと言っているだけです。

つまり上のコマンドで

①ethers
②ethereum-waffle
③chai

の3つがインストールされたようです。

インストールできたので、実際に書いていきましょう。

hardhat.config.jsに次のように記載してください。
(hardhat作成時に「Create an empty hardhat.config.js」を選んでいた場合、中身がからのはずなので。)

require("@nomiclabs/hardhat-waffle");
/**
* @type import('hardhat/config').HardhatUserConfig
*/
module.exports = {
 solidity: "0.7.3",
};

この下の部分が機能として取り込んでいるところになります。

require("@nomiclabs/hardhat-waffle");

ここで、「あれ、@nomiclabs/hardhat-ethersは取り込まなくていいの?」と思った方もいるかもしれません。

実zは、@nomiclabs/hardhat-waffleが@nomiclabs/hardhat-ethersと依存関係になっているため、@nomiclabs/hardhat-waffleを取り込めば、@nomiclabs/hardhat-ethersも参照できるという関係性になります。

また、ここについては

module.exports = {
 solidity: "0.7.3",
};

 ざっくりですが、コントラクトはsolidityという言語を使うのですが、色々なバージョンがあります。

ここでは0.7.3というバージョンを使うということを宣言している箇所になります。

今回は以上となります。

Hardhatの設計が①タスク②プラグインの二つからなり、hardhat.config.jsという基本となるファイルを書くところまで行きました。

続きは次回にいたします。

サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊