kasoqian

kasoqian

区块链步道师,传播区块链技术

Gas最適化コラム:01 定数、不変、変数

実行#

Foundry 公式ドキュメントに従って実行環境を設定した後、このプロジェクトで以下のコマンドを実行すると、実際の gas の違いを確認できます。

forge test --contracts 01_Constant/Constant.t.sol --gas-report

機能の概要#

  1. constant:定数を宣言し、宣言時に値を設定する必要があり、後で変更できません。

  2. immutable:定数を宣言し、宣言時とコンストラクタで値を設定でき、後で変更できません。

  3. 変数:変数を宣言し、任意の段階で値を設定でき、後で変更できます。

デモコード#

以下は、異なる修飾子を使用して 3 つの変数を定義した例です。

contract Constant {
    uint256 public constant varConstant = 1000;
    uint public immutable varImmutable = 1000;
    uint public variable = 1000;
}

以下は、3 つのケースで変数を読み取る際の gas の違いを示したものです。gas の最適化に関する提案は以下の通りです:

  1. 実際の状況に合わせて、変数の定義に variable を使用することを避けるべきです。

  2. 変更が不要な定数には、immutable を使用して定義することをお勧めします。その機能性と gas において最適です。

キーワードgas 消費節約結果
constant1832122 (≈92%)| ✅ 建議
immutable1612144 (≈93%) | ✅ 建議
variable2305
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。