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