【Ethereum・Solidity】基本データ型まとめ(int / string / bool / Array / Struct / address / mapping)

Ethereum

今回はEthereumのスマートコントラクトを開発する際に用いる言語である、Solidityの基礎となるデータ型をまとめて解説していきます。

基本的な8つの型

Solidityには大きく8つの型が存在しています。

int 符号付き整数
uint 符号なし整数
string 文字列
bool ブーリアン
Array 配列(固定、可変)
Struct 構造体
address アドレス
mapping マッピング(連想配列のようなもの)

int・uint

様々なサイズの符号付き(int)、符号なし(uint)のデータ型です。
int8~int256, uint8~uint256などまで、8の倍数だけ型が存在しています。
※未指定の場合、256bitとなる。

この8の倍数はbit数を表しているため、例えばuint8の場合、0~255が値の範囲となります。

string

文字列を格納するデータ型です。

他の言語と異なる点としては、文字列同士で比較をすることができない点です。
文字列同士で比較を行う際は、一度、Keccak256関数(ハッシュ関数)を使って文字列をbytes32型にし、その値で比較する必要があります。

bool

ブーリアンは他の言語と同じように、true(真)、false(偽)を格納するデータ型です。
比較演算子についても、他の言語と似た形で使用可能です。

ただし、Solidityのbool型は、短絡評価となっているため、複数の条件のいずれかがfalseであることが分かったとき、その時点で評価の処理を中断します。

Array

配列が格納されるデータ型です。
固定長、可変長いずれの配列も扱うことが可能です。

struct

構造体を格納するデータ型です。
C++などと同様にstructを用いて定義します。

このときuintなどの値で、可能な限りbit数を下げることができれば、容量を下げ、GASの節約に繋がります。

address

ウォレットのアドレス(送金先)や、コントラクトのアドレスなどが格納されるデータ型です。
サイズは20バイト、整数型と同じ比較演算子を持っており、address型特有のメソッドも存在しています。

balance アドレスが持つEtherをWei単位で返します。
返り値の型はuint256となります。
transfer(uint256 amount) アドレスへEtherをWei単位で送金します。
このとき、処理に失敗すると例外がthrowされます。
send(uint256 amount) アドレスへEtherをWei単位で送金します。
このとき、処理に失敗するとfalseを返します。

mapping

マッピング型は他言語で言うところの連想配列です。
KeyとValueを関連付けることができます。

このときValueのオブジェクトにはstructを設定することも可能です。

Scroll to top