はじめに(Introduction)
EVM互換のブロックチェーンで動作するスマートコントラクトをHardhatを使って作成します。
準備
先に以下をインストールしてください。
- Visual Studio Codee(以下 VSCode)
- Node.js
Nodeのバージョンは20系のLTSを利用しています。
VSCodeでは以下の拡張機能(Extension)を入れておいた方が良いです。
Solidityという拡張機能はいくつかあるのですが、今回はHardhatを使うのでアイコンは黄色で帽子の絵が付いてるものを選んでください。
Hardhatのインストール
作業用フォルダを作成し、VSCodeを起動して作成したフォルダを開きます。
VSCodeのターミナルを開きます。
npm初期化
ます、npmの初期化をします。
npm init -y
Hardhatインストール
Hardhatをインストールします。
npm install --save-dev hardhat
OpenZeppelinインストール
スマートコントラクトの便利なライブラリであるOpenZeppelinをインストールします。
npm install --save-dev @openzeppelin/contracts
プロジェクト作成
以下のコマンドでHardhatプロジェクトを作成します。
npx hardhat init
いくつかの選択がありますが、ここでは全てエンターで進めていきます。
888 888 888 888 888
888 888 888 888 888
888 888 888 888 888
8888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888
888 888 "88b 888P" d88" 888 888 "88b "88b 888
888 888 .d888888 888 888 888 888 888 .d888888 888
888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.
888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888
Welcome to Hardhat v2.22.4
√ What do you want to do? · Create a JavaScript project
√ Hardhat project root: · <作業フォルダ>
√ Do you want to add a .gitignore? (Y/n) · y
√ Do you want to install this sample project's dependencies with npm (@nomicfoundation/hardhat-toolbox)? (Y/n) · y
上記のような表記になり、hardhat-toolboxがインストールされたら完了します。
インストール後は以下のようなフォルダ構成になります。
Lock
というサンプルコードがあります。
<作業フォルダ>
│ .gitignore
│ hardhat.config.js
│ package-lock.json
│ package.json
│ README.md
│
├─contracts
│ Lock.sol
│
├─ignition
│ └─modules
│ Lock.js
│
├─node_modules
│
└─test
Lock.js
基本操作
コンパイル(Compile)
以下のコマンドでSolidity(.sol ファイル)をコンパイルします。
npx hardhat compile
コンパイルが成功するとartifacts
フォルダが生成されます。
artifacts
├─build-info
│
└─contracts
└─Lock.sol
Lock.dbg.json
Lock.json
artifacts/contracts/Lock.sol
というフォルダ配下にLock.json
ファイルができます。
これには、Contract Application Binary Interface(ABI)やバイナリコードなどが含まれています。
デプロイ(Deploy)
Hardhat Ignition は Harthat のバージョン 2.18.0 から導入されています。
以下のコマンドで指定したモジュールのデプロイを行います。
GLOBAL OPTIONS
を指定していないので仮想ノードでのデプロイとなります。
npx hardhat ignition deploy .\ignition\modules\Lock.js
別のターミナルを開き以下のコマンドでlocalhost
にテスト用のノードを起動します。
npx hardhat node
以下のコマンドでlocalhost
のノードにデプロイします。
npx hardhat --network localhost ignition deploy .\ignition\modules\Lock.js
デプロイが成功するとignition
フォルダに以下のようなファイルができます。
chain-31337
はchain-
にネットワークIDを付与したものです。
ignition
├─deployments
│ └─chain-31337
│ │ deployed_addresses.json
│ │ journal.jsonl
│ │
│ ├─artifacts
│ │ LockModule#Lock.dbg.json
│ │ LockModule#Lock.json
│ │
│ └─build-info
│ 22662767f8b1a09e64d324318d70c2ac.json
│
└─modules
Lock.js
テスト(Test)
以下のコマンドでテストを行います。
npx hardhat test
テストファイルを指定することもできます。
npx hardhat test .\test\Lock.js
まとめ(Conclusion)
HardhatのインストールとHardhatプロジェクトの作成をしました。
また、基本的な操作について軽く説明をしました。
次回はコントラクトの作成とデプロイ用のモジュールを生成したいと思います。