Solidityとは・コントラクトの骨格
コードを1行ずつ読み解く、contract の骨格
前回は「書いて、動かして、変える」を体験しました。今回は、あのコードを 1 行ずつ読み解いて、Solidity プログラムの骨格を覚えます。
Solidity ってなに?
Solidity は、スマートコントラクトを書くためのプログラミング言語です。
スマートコントラクトとは、ブロックチェーンの上に設置する「自動で動く仕組み」のこと。この講座ではずっと自動販売機にたとえます。
- 自動販売機は、一度街に設置すれば、持ち主がいなくても 24 時間動き続けます
- 誰が使っても、決められたルールどおりにしか動きません(お金を入れずにジュースは出ない)
- ブロックチェーンに設置したスマートコントラクトも同じです。一度設置(デプロイ)すれば、誰にも止められず、決めたルールどおりに動き続けます
その「決めごと」を書く言語が Solidity です。
最小のコントラクトを読む
これが、いちばん小さい Solidity プログラムです。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
// これはコメント(機械は読まない、人間のためのメモ)
contract VendingMachine {
// まだ空っぽの自動販売機
}
1 行ずつ見ていきます。
1行目: // SPDX-License-Identifier: MIT
「このコードは誰でも自由に使っていいよ(MIT ライセンス)」という宣言です。// で始まる行はコメント(後述)なので、プログラムの動きには関係ありません。決まり文句として毎回先頭に書きます。
2行目: pragma solidity ^0.8.20;
「このコードは Solidity のバージョン 0.8.20 以降(0.9 未満)で変換してね」という指定です。Solidity にもバージョン(版)があり、版によって書き方が少しずつ違うため、最初に宣言します。この講座では全部 ^0.8.20 で統一します(Nobiq Lab のコンパイラと同じ版です)。
頭の ^(ハット)は「この版以降なら OK」のゆるめの指定です。^ を付けずに pragma solidity 0.8.19; のように数字だけを書くと「その版ぴったりでしか変換しない」という厳しい指定になり、Lab のコンパイラ(0.8.20)と合わずエラーになることがあります。必ず ^ を付けて写してください。
行末の ;(セミコロン)は「文の終わり」の印。日本語の「。」にあたります。忘れるとエラーになるやつです(前回わざと消しましたね)。
4行目: // これはコメント
// から行末まではコメント=人間のためのメモです。コンピュータは無視するので、日本語でも自由に書けます。「なぜこう書いたか」を残しておくのに使います。
5〜7行目: contract VendingMachine { }
ここが本体です。contract は「ここからコントラクト(自動販売機)の設計図を書きます」という宣言。VendingMachine はあなたが付ける名前です(英数字、慣習として大文字始まり)。
{ と } で囲んだ範囲が、この自動販売機の中身。今回は空っぽですが、次回から中身(記録する値やボタン)を足していきます。
骨格まとめ
つまり Solidity プログラムの骨格は、毎回この形です。
ライセンスの決まり文句
バージョン宣言;
contract 名前 {
ここに中身を書く
}
今回覚えたこと
- スマートコントラクト = ブロックチェーンに設置する自動販売機。一度設置すれば止まらず、ルールどおりに動く
- 骨格 = ライセンス行 →
pragma行 →contract 名前 { 中身 } ;= 文の終わり。//= 人間用メモ(コメント)
次回は、自動販売機の中に「値段」「営業中かどうか」などの**記録(変数)**を持たせます。
:::tip Lab でやってみる
上の最小コントラクトを Lab で写してコンパイルしてみましょう。成功したら、VendingMachine を自分の好きな名前(例: MyMachine)に変えて、もう一度コンパイル。名前は自由に付けていいことが体感できます。Lab の操作方法: Lab をはじめる
:::