Remix IDE サンプルコードの解析1

スポンサーリンク

Remix IDEのサンプルコードを解析してみます。1つ目は、Storageコントラクトです。

Remix IDEサンプルコード:Storageコントラクト

Remix IDEにはデフォルトでSolidityのサンプルコードが3本が格納されています。今回はその一つ目のStorageコントラクトのソースコードを解析してみます。非常にシンプルなコードですが、Solidityの基礎的な要素が盛り込まれていますので、初心者の方にはとても良い教材となっています。コードの頭から順に見ていきましょう。

1_Storage.sol

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と実行は以下の記事に記載していますので、ご参考にしてください。

コメント

タイトルとURLをコピーしました