Solidityプログラミング

【Solidity開発者向け】Gas代をより安くするためのテクニック一覧※随時更新

こんにちは、たいきです(@taiki_16_k)

Web3エンジニアになるべくSolidityを必死に勉強しています。

今回は、Solidity学習過程で学んだGas代の節約法をこの記事にメモしていこうと思います。

学んだことを随時この記事に更新していこうと思うのでよろしくお願いします。

 

constantを使う

 

変数をconstantにするとガス代の節約につながります。

constantは変更することのできない変数のことです。

その値はハードコーディングされており、constantを使用することでガス代の節約になります。

なぜガス代が安くなるのかというと、読み取り専用の変数になり新しくデータを書き込むことができなくなるからです。

ブロックチェーン上のデータの書き込みはノードを運営するコンピュータ全部に書き込む必要が出てくるので当然ガス代は高くなります。

Javascriptのconstantも変えることのできない変数として同じような定義の仕方がありますね。

コード例

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract Constants {
    //コーディングの慣習としてconstantの場合は大文字にする
    uint public constant MY_UINT = 123;
    address public constant MY_ADDRESS = "YOUR_ADDRESS";
}

 

immutableを使う

 

上記と同様に変数をconstantにするとガス代の節約につながります。

Immutableconstantと同じく変えることの出来ない変数です。

もっとも、その値はコンストラクタの内部で設定することができますが、その後で変更することはできません。

コード例

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract Immutable {
    //コーディングの慣習としてconstantの場合は大文字にする
    uint public immutable MY_UINT;
    address public immutable MY_ADDRESS;

    constructor() {
        MY_UINT = 123;
        MY_ADDRESS = msg.sender;
    }
}

 

requireをCustom Errorに置き換える

 

requireステートメントをCustom Errorの形で書くとガス代が削減できます。

こちらに関するSolidity公式のブログ >>

 

requireの条件を満たさなかった場合のエラー文(string)の分が削減できます。

これはコードを見た方がわかりやすいと思います。

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

//CustomErrorはコントラクト外に書く
error NotOwner();

contract CustomError {
    address payable owner = payable(msg.sender);

    function withdraw() public {
        //通常ならこのrequireだが、、、
        // require(msg.sender == owner, "Not owner");

        // CustomErrorを使用した場合
        if(msg.sender != owner) revert NotOwner();

        owner.transfer(address(this).balance);
    }
}

 

随時更新していきます

 

こちらの記事は学習過程において随時更新していく予定です。

よろしくお願いします。

 

TwitterではSolidityプログラミングや仮想通貨、起業関連の発信をしているのでよかったらフォローお願いします

僕のTwitter >>

 

 

 

ライバー事務所
 

【PR】しばらいぶではPocochaで配信してくれるライバーさんを募集中です!

 

ランキング1位 ライバークリエイト♪
おすすめ度
取り扱いアプリイチナナ、Pococha、BIGOLIVE、Showroom

詳細ページ公式LINE

ランキング2位 ベガプロモーション
おすすめ度
取り扱いアプリイチナナ、Pococha、BIGOLIVE、ミクチャ、LINE LIVEなど
(*国内配信アプリ全て対応♪)

詳細ページ公式LINE

ランキング3位 Viibar(ビーバー)
おすすめ度
取り扱いアプリPococha特化

詳細ページ公式LINE

https://doge-man.com/live/liver-agent-index/

ブロガー/ライバー/YouTuber/エンジニア
タイキ
無名の大学生からライバーになり、男性1位・17Live世界イベ出場・東京Walker+掲載されました!ライバー歴3年

このブログではライブ配信の情報、ガジェット、在宅ワーク、起業について発信しています。

【経歴】慶應→イチナナ公式ライバー→世界イベや雑誌掲載などランキング上位多数→起業

お問い合わせ>>
\ Follow me /