Nobiq
Nobiq

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 をはじめる :::