2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

スマートコントラクト開発(準備)

Last updated at Posted at 2024-08-16

はじめに(Introduction)

EVM互換のブロックチェーンで動作するスマートコントラクトをHardhatを使って作成します。

準備

先に以下をインストールしてください。

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-31337chain-にネットワーク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プロジェクトの作成をしました。
また、基本的な操作について軽く説明をしました。
次回はコントラクトの作成とデプロイ用のモジュールを生成したいと思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?