👌

Solidity基礎学習1日目(Boolean型, Uint型)

に公開

Claud Codeなどを利用すると、かなりの部分のスマートコントラクトを実装できますが、それだけでは不安なので、Solidityを基礎から網羅的に学習していきます。平日は仕事をしているので進捗はゆっくりとなるかもしれません。

Solidity基礎学習 - Boolean型とUint型

日付: 2025年8月14日
学習内容: Solidityの基本的なデータ型について

1. Boolean型の学習

Boolean.solの概要

Boolean型は、Solidityにおける最もシンプルなデータ型の一つで、trueまたはfalseの値のみを取ります。

重要なポイント

初期値

bool public myBool; // 初期値はfalse(0)
  • Boolean型の変数は、明示的に初期化しない場合、デフォルトでfalse(0)が設定されます

論理演算子

function setMyBool(bool _myBool) public {
    myBool = _myBool;           // 直接代入
    myBool = !_myBool;          // 論理否定(NOT)
    myBool = true && _myBool;   // 論理積(AND)
    myBool = true || _myBool;   // 論理和(OR)
    myBool = true == _myBool;   // 等価比較
    myBool = true != _myBool;   // 不等価比較
}

論理演算子の種類:

  • ! : 論理否定(NOT)
  • && : 論理積(AND)
  • || : 論理和(OR)
  • == : 等価比較
  • != : 不等価比較

2. Uint型の学習

ExampleUint.solの概要

Uint型は、符号なし整数を扱うデータ型で、様々なビットサイズが用意されています。

重要なポイント

基本的なUint型

uint public myUint;        // uintはuint256のエイリアス
uint256 public myUint256;  // 0 ~ (2^256) - 1
uint8 public myUint8 = 250; // 0 ~ (2^8) - 1 = 0 ~ 255

符号付き整数型

int public myint = -10;    // intはint256のエイリアス
int256 public myint256;    // -2^255 ~ +2^255 - 1

ガスコストの最適化

uint8 public myUint8 = 250; // ガスコストを節約するには小さいものを選ぶこと
  • 小さいビットサイズの型を使用することで、ガスコストを節約できます
  • 必要最小限のビットサイズを選択することが重要です

インクリメント・デクリメント操作

function decrementUint8() public {
    myUint8--; // デクリメント
}

function incrementUint8() public {
    myUint8++; // インクリメント
}

3. 学習のポイント

データ型の選択

  1. Boolean型: 真偽値が必要な場合に使用
  2. Uint型: 正の整数が必要な場合に使用
  3. Int型: 負の値も扱う必要がある場合に使用

ガスコストの考慮

  • 必要最小限のビットサイズを選択する
  • 大きな数値を扱う必要がない場合は、uint8uint16などの小さい型を使用する

初期値の理解

  • Boolean型: デフォルトでfalse
  • Uint型: デフォルトで0
  • 明示的な初期化が推奨される

4. 今後の学習に向けて

これらの基本的なデータ型を理解することで、より複雑なスマートコントラクトの作成に進むことができます。次は、整数のラップアラウンド、文字列型、配列、マッピング、構造体などの複合データ型について学習していきましょう。

重要な概念:

  • 整数のオーバーフロー/アンダーフロー処理
  • データの場所の適切な指定
  • 効率的な文字列処理
  • ガスコストの最適化

参考:

Discussion