[スマートコントラクト・プログラミング]Solidityの基本文法

プログラミング

スマートコントラクト,DAppsを作成するためのプログラミング言語であるSolidityの基本文法について記載します。

スマートコントラクト,DAppsとは

スマートコントラクトおよびDAppsとは、ブロックチェーンに保存され、所定の条件が満たされたときに仲介者の関与なしに契約の実行を自動化するプログラムのことを指します。

契約のワークフローを自動化して、条件が満たされたときにアクションをトリガーするようなこともできます。

ブロックチェーン上で利用されるこのようなプログラムのことをスマートコントラクトまたはDAppsと呼びます。

次に2つの簡単なスマートコントラクトのコードを紹介します。

値の設定をする簡単なスマートコントラクト

OpenZeppelinのフレームワークを利用したスマートコントラクト

Solidityの基本文法

上記の二つのソースコードをもとにSolidityの基本的な文法を解説します。

Pragma

Pragmaとは、作成したSolidityに使用するコンパイラのバージョンを指定する手法です。

Solidityファイル内で一番最初に記載されるべきコードと定義されています。

Solidityはまだ出来たばかりの比較的新しいプログラミング言語です。現在も継続的に日々新しい機能や改善が導入されています。

上記2つのソース コードではSolidity バージョン 0.4.16からバージョン 0.9.0 までの機能をサポートしていることを明記していますが、下記のように記載し、コンパイラのバージョンを指定することもできます。

Contract

Solidity のContractとは、Ethereum ブロックチェーンの特定のアドレスに存在するコードとデータのコレクションを指します。

上記1つ目のスマートコントラクトでは、Sample というContractを定義しています。

そのコントラクトの中で、storedUintData という状態変数を宣言し、set および getファンクションを使用して、宣言した変数の値を変更または取得できるスマートコントラクトを定義しています。

Importing Files

SolidityではJavaScriptによく似た import ステートメントをサポートしています。

下記のimportの例では、”sample.sol” からすべてのグローバルシンボルをインポートしています。

下記のimportの例では、”sample.sol” のすべてのグローバルシンボルをメンバーとする新しいグローバルシンボルnewSampleを作成しています。

なお、現在のファイルと同じディレクトリからファイル x をインポートする場合、下記のようになります。

Comment

Solidityのコメント機能は、CとC++のコメントと同じような手法をサポートしています。

  • // と行末の間のテキストはコメントとして扱われ、Solidity Compiler によって無視されます。
  • 文字 /* と */ の間のテキストは、コメントとして扱われ、複数の行にまたがる場合も有効です。

基本データ型

Solidityの基本データ型は下記の通り。

int 符号付き整数
uint 符号なし整数
string 文字列
bool ブーリアン
Array 配列
Struct 構造体
address アドレス
mapping マッピング・連想配列

以下のコードは、異なるタイプのValues Typesの値を初期化しているコントラクト例です。

Solidityのキーワード(予約語)

Solidityのキーワード(予約語)は下記の通り。

変数名、関数名、クラス名などの名前(識別子)として下記の名前は利用できません。

  • abstract
  • after
  • alias
  • apply
  • auto
  • case
  • catch
  • copyof
  • default
  • define
  • final
  • immutable
  • implements
  • in
  • inline
  • let
  • macro
  • match
  • mutable
  • null
  • of
  • override
  • partial
  • promise
  • reference
  • relocatable
  • sealed
  • sizeof
  • static
  • supports
  • switch
  • try
  • typedef
  • typeof
  • unchecked

今回紹介したSolidityの仕様やコードをRemix IDEHardhatで実際に実行やテストをして確認してみましょう。

実際に動かしたり、テストすることで理解が深まるかと思います。

hardhatのインストール手順

Ethereum(イーサリアム)のDApps開発環境Hardhatのインストール手順
Ethereum(イーサリアム)のローカル開発環境であるHardhatのインストール手順を記載します。 Hardhatとは? Hardhatは、Solidityなどで開発したイーサリアムのスマートコントラクト、Dappsをコ...

HardhatでスマートコントラクトのDeploy手順

[Hardhat]SolidityでHello Worldのスマートコントラクトを作成
Solidityを使ってHello Worldを作成してみましょう SolidityでHello World! 前提条件 ・Hardhat デフォルト・フォルダ構成 Hardhatについては下記記事を参照ください。 ...
タイトルとURLをコピーしました