メインコンテンツまでスキップ

lesson-2_Solidityでスマートコントラクトを作成しよう

👩‍💻 コントラクトを作成する

「👋(wave)」の総数をトラッキングするスマートコントラクトを作成します。ここで作成するスマートコントラクトは、後でユースケースに合わせて自由に変更できます。

contractsディレクトリの下にWavePortal.solという名前のファイルを作成してください。

Hardhatを使用する場合、ファイル構造は非常に重要ですので、注意する必要があります。ファイル構造が下記のようになっていれば大丈夫です 😊

packages/
└── contract/
└── contracts/
└── WavePortal.sol

次に、コードエディタでプロジェクトのコードを開きます。

ここでは、VS Codeの使用をお勧めします。ダウンロードは こちら から。

VS Codeをターミナルから起動する方法は こちら をご覧ください。

  • ターミナル上で、codeコマンドを実行

今後VS Codeを起動するのが一段と楽になるので、ぜひ導入してみてください。

コーディングのサポートツールとして、VS Code上でSolidityの拡張機能をダウンロードすることをお勧めします。

ダウンロードは こちら から。

それでは、これからWavePortal.solの中身の作成していきます。

WavePortal.solをVS Codeで開き、下記を入力します。

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

import "hardhat/console.sol";

contract WavePortal {
constructor() {
console.log("Here is my first smart contract!");
}
}

コードを詳しくみていきましょう。

// SPDX-License-Identifier: MIT

これは「SPDXライセンス識別子」と呼ばれ、ソフトウェア・ライセンスの種類が一目でわかるようにするための識別子です。

詳細については、こちら を参照してみてください。

pragma solidity ^0.8.19;

これは、コントラクトで使用するSolidityコンパイラのバージョンです。

上記のコードでは、バージョン0.8.19以上かつバージョン0.9.0未満のコンパイラのみを使用し、それ以外のバージョンは使用しません、という宣言をしています。

コンパイラのバージョンがhardhat.config.jsに記載されているものと同じであることを確認してください。

もし、hardhat.config.jsの中に記載されているSolidityのバージョンが0.8.19でなかった場合は、WavePortal.solの中身をhardhat.config.jsに記載されているバージョンに変更しましょう。

import "hardhat/console.sol";

コントラクトを実行する際、コンソールログをターミナルに出力するためにHardhatのconsole.solのファイルをインポートしています。

これは、今後スマートコントラクトのデバッグが発生した場合に、とても役立つツールです。

contract WavePortal {
constructor() {
console.log("Here is my first smart contract!");
}
}

contractは、ほかの言語でいうところの「class」のようなものなのです。

このcontractを初期化すると、constructorが実行されてconsole.logの中身がターミナル上に表示されます。

classの概念については、こちら を参照してください。

🔩 constructor とは

constructorはオプションの関数で、contractの状態変数を初期化するために使用されます。

これから詳しく説明していくので、constructorに関しては、まず以下の特徴を理解してください。

  • contractは1つのconstructorしか持つことができません。
  • constructorは、スマートコントラクトの作成時に一度だけ実行され、contractの状態を初期化するために使用されます。
  • constructorが実行された後、コードがブロックチェーンにデプロイされます。

🙋‍♂️ 質問する

ここまでの作業で何かわからないことがある場合は、Discordの#ethereumで質問をしてください。

ヘルプをするときのフローが円滑になるので、エラーレポートには下記の3点を記載してください ✨

1. 質問が関連しているセクション番号とレッスン番号
2. 何をしようとしていたか
3. エラー文をコピー&ペースト
4. エラー画面のスクリーンショット

次のレッスンでは、スマートコントラクトを実行します。