Remix IDEのサンプルコードを解析してみます。1つ目は、Storageコントラクトです。
Remix IDEサンプルコード:Storageコントラクト
Remix IDEにはデフォルトでSolidityのサンプルコードが3本が格納されています。今回はその一つ目のStorageコントラクトのソースコードを解析してみます。非常にシンプルなコードですが、Solidityの基礎的な要素が盛り込まれていますので、初心者の方にはとても良い教材となっています。コードの頭から順に見ていきましょう。
version pragma:コンパイラバージョン
ソースコードの3行目にある “pragma solidity” は、Solidityのコンパイラーバージョンを指定している箇所になります。
pragma solidity >=0.7.0 <0.9.0;
この場合、バージョン0.7.0以上、0.9.0未満のコンパイラーバージョンに対応したソースということを宣言しています。これは、バージョンが上がることにより仕様が変わり、コードが意図した動きをしなくなることを避ける目的があります。
範囲指定ではなく、単一バージョンを指定して書くことも可能です。
pragma solidity ^0.8.12
バージョンの頭に「^」(ハット)が付いている場合は、0.8.12 バージョン固定ということではなく、0.8.12以降で0.8.xx最新のコンパイラーバージョンを指定したことになります。
(参考:Solidity Docs の version pragma解説)
contract:コントラクト
“contract” で始まり、波括弧(Curly Brackets)で括られた部分がコントラクト本体になります。contractに続く文字列がコントラクト名称です。コントラクト名称は通常、最初の文字が大文字になります。
contract Storage {
}
uint256:型宣言
Storageコントラクト内で最初に記載されている uint256 は変数の型になります。
uint256 number;
numberというグローバル変数をuint256型で定義していることになります。このuintは “Unsigned Integer” の略で、「符号なし整数」という意味です。256は256ビットを意味し、32バイトの数が格納可能です。uintだけ宣言するとSolidityのデフォルトはuint256ですので、uint256の変数が用意されます。
型には複数の種類がありますが、別の機会にご説明します。
/* */:コメント
/* から */ はコメント行になります。単行のコメントは // でも記載可能です。複数行の場合は、/* から */ の間がコメントになります。
コメントの中に、@dev, @param といった記載がありますが、これは NatSpec(ナットスペック:Ethereum Natural Language Specification Format) と呼ばれる、Solidityにおけるコメント記載の標準ルールのタグになります。NatSpecについてはまた別途ご説明いたします。
/**
* @dev Store value in variable
* @param num value to store
*/
(参考:Solidity DocsのNatSpec解説)
function:関数
function は関数の定義です。最初の関数は store という関数名を定義しています。
function store(uint256 num) public {
number = num;
}
関数名の後に丸括弧で括られている部分は引数になります。この store関数はuint256型の num という一つの引数を持っています。
引数の後、波括弧の前にある public は関数のVisibility(視認性、可視性)と呼ばれるものです。この関数のアクセスレベルを表しています。publicは外部からの呼び出しが可能な関数の宣言です。関数のVisibilityには他に external, internal, privateがあります。(参考:Solidity DocsのFunction Visibility)
この store 関数は、引数の num を受け取り、その値をコントラクト内の変数 number に格納しています。
function retrieve() public view returns (uint256){
return number;
}
2つ目の関数 retrieve は引数はありませんが、復帰値を持つ関数です。関数の宣言に returns (uint256) との記載があり、関数内で、return number と記載があります。関数が呼び出された時に、コントラクト内のグローバル変数 number に格納されている値を返す関数になっています。
また、この retrieve 関数には public というVisibilityの後に view という記載があります。これは State Mutabilityと呼ばれるもので、状態変数の変更可能性の宣言になります。viewは、「状態変数の参照はするが、変更はしない」という宣言になります。State Mutabilityには他に、pure, payable, nonpayable があります。(参考:Solidity DocsのState Mutability)
Storageコントラクトのまとめ
Remix IDEにデフォルトで格納されているSolidityサンプルコードのひとつである Storage コントラクトの解析を行いました。非常にシンプルですが、コンパイラバージョン、コントラクト、関数、型、コメント等のSolidityコードの要素が含まれていますので、Solidity初心者には勉強になるソースコードです。その他のサンプルコードも読み解いていきましょう。
このStorageコントラクトのDeployと実行は以下の記事に記載していますので、ご参考にしてください。
コメント