導入
コントラクトが { } の直下に持つ変数を 状態変数(state variable) と呼びます。これはブロックチェーンの台帳に永続的に保存される、コントラクトの「記憶」です。
説明
Solidity は静的型付けで、変数には必ず型を書きます。よく使う型を見てみましょう。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract Types {
uint256 public count = 0; // 符号なし整数(0以上)
int256 public temperature = -5; // 符号あり整数(マイナスOK)
bool public isActive = true; // 真偽値
string public name = "Alice"; // 文字列
address public owner; // Ethereumのアドレス(後の章で詳説)
bytes32 public dataHash; // 32バイトの固定長データ
}
uint256… 符号なし整数。uintはuint256の別名。残高やカウントに最頻出。int256… 符号あり整数(マイナスも扱える)。intはint256の別名。bool…true/false。string… 文字列(UTF-8)。文字列操作はガスが高いので多用は避ける。address… Ethereum の口座アドレス(0xで始まる20バイト)。第3章で扱います。
状態変数は「台帳への保存=書き込みにガスがかかる」ことを常に意識します。初期値を書かなければ、数値は 0、bool は false、string は空文字といったゼロ値で始まります。
やってみよう
uint256 は 0 から約 1.15×10⁷⁷ までの巨大な範囲を扱えます。「残高やトークン数にマイナスはありえない」場面では uint、「気温や損益」など負の値がありうる場面では int を選ぶ、という使い分けを意識しましょう。