【NFTで注目!】イーサリアムのソフトウェア開発環境Hardhat | 千葉で集客ホームページ制作はティーエスフォート
コラム

【NFTで注目!】イーサリアムのソフトウェア開発環境Hardhat

【NFTで注目!】イーサリアムのソフトウェア開発環境Hardhat

Hardhatは、Ethereum(イーサリアム)のソフトウェアをコンパイル、デプロイ、テスト、およびデバッグするための開発環境です。この記事ではHardhatの概要と使い方についてご紹介します。

はじめに

Hardhatは、Ethereum(イーサリアム)のソフトウェアをコンパイル、デプロイ、テスト、およびデバッグするための開発環境です。この記事ではHardhatの概要と使い方についてご紹介します。

Hardhatとは

Hardhatは以下の特徴を持ちます。
・ローカルでSolidityのテストやデバッグが可能
・ローカルイーサリアムネットワークにコントラクトを簡単にデプロイできる
・プラグインで機能を拡張できる

さらに詳しく知りたい場合は以下のサイトを参照しましょう。
公式サイト:https://hardhat.org/
チュートリアル:https://hardhat.org/tutorial/ 

新しいHardhatプロジェクトの作成

ターミナルを開き、次のコマンドを実行します。プロジェクト用の作業用ディレクトリを作成し、初期化コマンドの実行とインストールを行っています。


#mkdir hardhat-tutorial
#cd hardhat-tutorial
#npm init --yes
#npm install --save-dev hardhat


Hardhatをインストールしたのと同じディレクトリで下記コマンドを実行します。


#npx hardhat
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.0.0

? What do you want to do? …
Create a sample project
❯ Create an empty hardhat.config.js
Quit


以上で初期設定が完了しました。

スマートコントラクトの作成とコンパイル

転送可能なトークンを実装するシンプルなスマートコントラクトを作成します。トークンコントラクトは、価値を交換または保存するために頻繁に使用されます。

スマートコントラクトを作成するには、contractsと呼ばれる新しいディレクトリを作成することから始め、 Token.solと呼ばれるディレクトリ内にファイルを作成します。

以下がサンプルコードです。


// Solidityファイルはこのプラグマで始まる必要があります。
//Solidityコンパイラがバージョンを検証するために使用します。
pragma solidity ^0.7.0;

contract Token {
// トークンを識別するためのいくつかの文字列型変数。
//`public`修飾子は、コントラクトの外部から変数を読み取り可能にします。
string public name = "My Hardhat Token";
string public symbol = "MHT";

// 符号なし整数型変数に格納されるトークンの固定量。
uint256 public totalSupply = 1000000;

// アドレスタイプ変数は、イーサリアムアカウントを格納するために使用されます。
address public owner;

//マッピングはキー/値マップです。ここでは、各アカウントの残高を保存します。
mapping(address => uint256) balances;

/**
* コントラクタの初期化
* コンストラクターは、コントラクトの作成時に1回だけ実行されます。
*/
constructor() {
// totalSupplyは、アカウントであるトランザクション送信者に割り当てられます
balances[msg.sender] = totalSupply;
owner = msg.sender;
}

/**
* トークンを転送する関数。
* `external`修飾子は、コントラクトの外部からのみ関数を呼び出すことができるようにします。
*/
function transfer(address to, uint256 amount) external {
// トランザクションの送信者に十分なトークンがあるかどうかを確認してください。
require(balances[msg.sender] >= amount, "Not enough tokens");

//金額を転送します。
balances[msg.sender] -= amount;
balances[to] += amount;
}

/**
* 特定のアカウントのトークン残高を取得するための読み取り専用関数。
*/
function balanceOf(address account) external view returns (uint256) {
return balances[account];
}
}

まとめ

今回の記事では、イーサリアムのソフトウェアをコンパイル、デプロイ、テスト、およびデバッグするための開発環境である、Hardhatをご紹介しました。

今後NFTの普及とともに増えていく注目分野でもあり、基礎を押さえておくとよいでしょう。
ページ先頭へ