導入
Solidity のファイル(拡張子 .sol)は、いくつかの決まったおまじないから始まります。まずは「これが最小のコントラクトだ」という形を丸ごと眺めましょう。
説明
次が、値を1つ保存できるだけの最小のコントラクトです。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract HelloStorage {
string public message = "Hello, Blockchain";
}
// SPDX-License-Identifier: MIT… ライセンス表記。コンパイラが警告を出さないよう先頭に書くのが慣習。pragma solidity ^0.8.20;… コンパイラのバージョン指定。^0.8.20は「0.8.20 以上 0.9.0 未満」の意味。言語仕様が版によって変わるため必須。contract HelloStorage { ... }… コントラクトの定義。ほかの言語の「クラス」に近く、この{ }の中に状態(データ)と関数(処理)を書く。string public message = ...… 文字列を保存する状態変数(次のレッスンで詳説)。
このコントラクトを Ethereum にデプロイすると、message の中身が台帳に保存され、public を付けたことで誰でもその値を読み取れるようになります。
pragma の ^(キャレット)は「そのマイナーバージョン内での更新は許すが、破壊的変更が入るバージョンは拒否する」という安全装置です。特に 0.8.0 以降は整数のオーバーフローが自動でチェックされるようになった重要な区切りなので、実務では ^0.8.x を使います。
やってみよう
contract HelloStorage の名前や、message の文字列を変えるとどうなるか考えてみましょう。コントラクト名はファイル内に複数書け、デプロイ時に「どのコントラクトを配置するか」を選ぶことになります。