カテゴリー
サインイン 新規登録

間違いや改善の指摘

内容の技術的な誤り・誤字脱字やミスのご報告・解説やトピックの追記/改善のご要望は教材をさらに良くしていく上でとても貴重なご意見になります。

少しでも気になった点があれば、ご遠慮なく投稿いただけると幸いです🙏

実際には誤りではなく勘違いであっても、ご報告いただけることで教材のブラッシュアップにつながります。

質問ポリシー①

教材受講者みなさんのスムーズな問題解決のために、心がけていただきたいことがあります。

教材の内容に関する質問を投稿しましょう

教材の内容に関係のない質問や教材とは異なる環境・バージョンで進めている場合のエラーなど、教材に関係しない質問は推奨していないため回答できない場合がございます。

その場合、teratailなどの外部サイトを利用して質問することをおすすめします。教材の誤字脱字や追記・改善の要望は「文章の間違いや改善点の指摘」からお願いします。

0-3

Solidityの特徴

0.3 Solidityの特徴

Solidityはイーサリアム上で動作するスマートコントラクトを実装する為の開発言語です。
また、JavaScriptと似た性質を持った「コントラクト指向言語」でもあります。

Solidityの基本的なコードを簡単に解説していきます。

Copied!
pragma solidity ^0.5.0; contract Contract名 { //スマートコントラクトで行う処理をここに記述していきます。 }

まず最初に、Solidityのコンパイラバージョンを指定する必要があります。本教材では「0.5.0」のバージョンを使用しています。
次に、contract句を記述し、Contract名を宣言します。ブロックチェーン上に書き込まれた際、このcontract内に書かれた処理が、イーサリアムネットワーク上で動作することになります。

▼ よく使うデータ型

データ型 説明
int 符号あり整数
uint 符号なし整数
string 文字列型
bool 真偽値型
Array 配列(固定・可変)
Struct 構造体
address アドレス
mapping マッピング

真偽値型 : bool
trueとfalseの2種類を格納できます。

Copied!
bool flag = false;

数値型 : int
符号あり整数を格納できます。8~256bitの間で8の倍数ずつ範囲を指定可能。

Copied!
int num = -10;

数値型 : uint
符号なし整数を格納できます。8~256bitの間で8の倍数ずつ範囲を指定可能。

Copied!
uint num = 10;

文字列型 : string
文字列を格納できます。

Copied!
string name = "りんご";

アドレス型 : address
ethを保管する為のウォレットアドレスやスマートコントラクト自体に紐づくアドレスを格納することが可能です。

Copied!
address x = 0x123・・・・

配列 : uint[]、string[] ... etc
固定長配列と可変長配列を定義可能です。また「.length」で配列の大きさを取ることも可能です。

Copied!
uint[10] todo; // todo.length = 10

構造体 : struct
複数の型の変数をまとめて新しい型(構造体)として作ることが可能です。

Copied!
struct Person { uint weight; uint height; string name; } Person person; person.weight = 50; person.height = 160; person.name = "Tom";

連想配列 : mapping
様々なデータ型を「キー」と「バリュー」で紐付けることが可能です。簡単なサンプルを用意しました。
以下のサンプルでは、mappingに人物のデータ(体重/身長/名前)とアドレスを結びつけて格納しています。

Copied!
pragma solidity ^0.5.0; contract FruitsBox { struct Person { uint weight; uint height; string name; } mapping(address => Person) public personalData; function setPerson(uint _weight, uint _height, string memory _name, address _address) public { personalData[_address] = Person(_weight, _height, _name); } }

上記のサンプルを使って、mappingにデータを格納してみた場合、以下のようなデータテーブルが出来上がります。
余裕がある方は試してみると、より理解が深まると思います。

画像10