スマートコントラクトを実行してみよう
👶 スマートコントラクトを作成してみよう
前回、あらかじめ設定されていたテストのコントラクトを実行できました。
ではいよいよ自分でコントラクトを作成していきましょう。
packages/contract/contractsディレクトリの下にDomains.solという名前のファイルを作成してください。
Hardhatを使用する場合、ファイル構造は非常に重要ですので、注意する必要があります。ファイル構造が下記のようになっていれば大丈夫です 😊
packages
└── contract
└── contracts
└── Domains.sol
次に、コードエディタでプロジェクトのコードを開きます。
ここでは、VS Codeの使用をお勧めします。ダウンロードは こちら から。
VS Codeをターミナルから起動する方法は こちら をご覧ください。
- ターミナル上で、
code .コマンドを実行
今後VS Codeを起動するのが一段と楽になるので、ぜひ導入してみてください。
コーディングのサポートツールとして、VS Code上でSolidityの拡張機能をダウンロードすることをお勧めします。
ダウンロードは こちら から。
それでは、これからDomains.solの中身の作成していきます。
Domains.solをVS Codeで開き、下記を入力します。
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.17;
import "hardhat/console.sol";
contract Domains {
constructor() {
console.log("THIS IS MY DOMAINS CONTRACT. NICE.");
}
}
コードを詳しくみていきましょう。
// SPDX-License-Identifier: UNLICENSED
これは「SPDXライセンス識別子」と呼ばれ、ソフトウェア・ライセンスの種類が一目でわかるようにするための識別子です。
詳細については、こちら を参照してみてください。
pragma solidity ^0.8.17;
これは、コントラクトで使用するSolidityコンパイラのバージョンです。
上記のコードでは、このコントラクトを実行するときはSolidityコンパイラのバージョン0.8.17のみを使用しそれ以下のものは使用しません、という宣言をしています。
コンパイラのバージョンがhardhat.config.jsで同じであることを確認してください。
もし記載されているSolidityのバージョンが0.8.17でなかった場合は、Domains.solの中身をhardhat.config.jsに記載されているバージョンに変更しましょう。
import "hardhat/console.sol";
コントラクトを実行する際、コンソールログをターミナルに出力するためにHardhatのconsole.solのファイルをインポートしています。
これは、今後スマートコントラクトのデバッグが発生した場合に、とても役立つツールです。
contract Domains{
constructor() {
console.log("THIS IS MY DOMAIN CONTRACT. NICE.");
}
}
contractは、ほかの言語でいうところの「class」のようなものなのです。
このcontractを初期化すると、constructorが実行されてconsole.logの中身がターミナル上に表示されます。
classの概念については、こちら を参照してください。
🔩 constructor とは
constructorはオプションの関数で、contractの状態変数を初期化するために使用されます。
これから詳しく説明していくので、constructorに関しては、まず以下の特徴を理解してください。
contractは1つのconstructorしか持つことができません。constructorは、スマートコントラクトの作成時に一度だけ実行され、contractの状態を初期化するために使用されます。constructorが実行された後、コードがブロックチェーンにデプロイされます。
😲 コントラクトを実行しましょう
さぁ、スマートコントラクトを作成しました。
しかし、まだそれが機能するかどうかはわかりません。
実際に実行してみましょう。次のような手順となります。
Domains.solをコンパイルします。Domains.solをローカル環境でブロックチェーン上にデプロイします。- 上記が完了したら、
console.logの中身がターミナル上に表示されることを確認します。