Solidityにおけるデータ型のまとめを解説します。
Solidityのデータ型一覧
Solidityのデータ型一覧を表にしました。
データ型 | 取り得る値 | デフォルト値 | 備考 |
---|---|---|---|
bool | 真偽値 (true/false) | false | 無し |
int | 符号付き整数 (-2 ** n-1 〜 2 ** n-1 - 1) | 0 | int8〜int256と8bitずつ存在。 intはint256と同義(エイリアス)。 |
uint | 符号無し整数 (0 〜 2 ** n - 1) | 0 | uint8〜uint256と8bitずつ存在。 uintはuint256と同義(エイリアス)。 |
fixed | 符号付き固定小数点数 | 0 | fixed8〜fixed256と8bitずつ存在。 fixedはfixed256と同義(エイリアス)。 |
ufixed | 符号無し固定小数点数 | 0 | ufixed8〜uint256と8bitずつ存在。 uintはuint256と同義(エイリアス)。 |
address | Ethereumアドレス | address(0)(0x0000000000000000000000000000000000000000) | 無し |
bytes | バイト配列 | 0x | 無し |
string | 文字列 | ""(空文字) | 無し |
enum | 列挙型 | 列挙型における最初の要素 | 定数を列挙することが可能(値は最初の要素を0として順に割り振られる)。 |
struct | 構造体 | - | 異なるデータ型の変数を単一の型に纏めることが可能。 |
mapping | マッピング/キーと値のペア | マッピングの値のデータ型による | 無し |
array | 配列 | [](空配列) | 固定長配列、可変長配列の2つが存在。 |
サンプルコード
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; contract Test { /* bool(真偽値) */ bool varBool = true; /* int(符号付き整数) */ int varInt = -1; int varInt8 = 1; int varInt16 = -1; int varInt32 = 1; int varInt64 = -1; int varInt128 = 1; /* uint(符号無し整数) */ uint varUint = 1; uint varUint8 = 1; uint varUint16 = 1; uint varUint32 = 1; uint varUint64 = 1; uint varUint128 = 1; /* fixed(符号付き固定小数点数) */ fixed varFixed = -0.1; fixed varFixed8 = 0.1; fixed varFixed16 = -0.1; fixed varFixed32 = 0.1; fixed varFixed64 = -0.1; fixed varFixed128 = 0.1; /* ufixed(符号無し固定小数点数) */ ufixed varUfixed = 0.1; ufixed varUfixed8 = 0.1; ufixed varUfixed16 = 0.1; ufixed varUfixed32 = 0.1; ufixed varUfixed64 = 0.1; ufixed varUfixed128 = 0.1; /* address(Ethereumアドレス) */ address varAddress = 0x0000000000000000000000000000000000000000; /* bytes(バイト配列) */ bytes varBytes = "0x0"; bytes1 varBytes1 = "0"; bytes32 varBytes32 = "0x1234567890"; /* string(文字列) */ string varString = "hello"; /* enum(列挙型) */ enum Colors { Red, // 0 Green, // 1 blue // 2 } /* struct(構造体) */ struct User { uint id; string name; address balance; } /* mapping(マッピング/キーと値のペア) */ mapping (address => uint) balances; /* array(配列) */ // 固定長配列 string[2] members = ["bob", "alice"]; // 可変長配列 uint[] numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; }

各データ型によってコスト(ガス代)が異なります。より洗練されたアプリケーションを作成する場合、データ型ごとのコストも把握しておきましょう。