レッスン3

リミックスによるガス最適化技術

基本的なストレージ最適化のアプローチをマスターした今、練習することが重要です。 提供されている例に取り組み、独自の例を作成してみてください。 次のセッションでは、関数の可視性の最適化とライブラリでのコードの再利用について詳しく説明します。 最適化は芸術であり、科学でもあることを心に留めておいてください。 実験を続けてください!

ストレージの最適化

イーサリアムのガス支出の大部分はストレージに集中しています。 イーサリアムネットワークの状態(ストレージ)を変更する各操作は、通常、コストがかかります。 その結果、データの保持方法とアクセス方法に集中することで、大幅なコスト削減につながる可能性があります。 このセッションでは、Remixでストレージを最適化する方法をいくつか見ていきます。

ストレージはなぜ高価なのですか?

イーサリアムブロックチェーンは、恒久的なストレージを提供します。 ブロックチェーンに保存されたすべてのものは、ブロックチェーンが存続する限り利用できますが、この永続性にはコストがかかります。 ストレージを最適化することで、コストが削減されるだけでなく、イーサリアムのグローバル状態が効率的に使用されるようになります。

パッキング保管変数

紹介

Solidityは変数をスロットに格納します。 各スロットは 32 バイトです。 変数が 1 つのスロットに収まる場合は、それぞれ 1 回の SLOAD または SSTORE 操作で読み取りまたは更新できます。

次の 2 つの契約について考えてみます。

硬度
最適化なし
プラグマの堅実さ^0.8.9;

コントラクト UnoptimizedStorage {
    uint256 public value1;
    uint256 public value2;
}
硬度
最適化あり
プラグマの堅実さ^0.8.9;

contract OptimizedStorage {
    uint128 public value1;
    uint128 public value2;
}
  1. 両方のコントラクトを Remix にデプロイし、変数を操作するときにガスの違いを確認します。

  2. 最適化されたバージョンでは、両方value1value2と が 1 つの 32 バイト スロットを共有します。

ストレージ・スロットの再利用

紹介

ストレージスロット、特に一時的なデータストレージを使い終わったら、スロットを削除またはゼロにして、ガスの払い戻しを受けることができます。

硬度
プラグマの堅実さ^0.8.9;

contract 返金例 {
    uint256 public temporaryDataです。

function storeTemporaryData(uint256 data) public {
        temporaryData = data;
    }

関数 clearTemporaryData() public {
        delete temporaryData;
    }
}
  1. このコントラクトを Remix にデプロイします。

  2. 一時データを格納し、クリアします。

  3. ガス代を確認してください。 手術で delete 得られるガスの払い戻しに注目してください。

ヒストリカル・データに対するストレージの代わりにイベントの使用

紹介

オンチェーンでデータにアクセスする必要がない場合は、保存するのではなく、イベントとして記録することを検討してください。 イベントは、ストレージ操作よりもはるかに安価です。

硬度
プラグマの堅実さ^0.8.9;

contract EventExample {
    イベントDataStored(uint256データ);

function storeData(uint256 data) public {
        emit DataStored(data);
    }
}
  1. Remix でコントラクトを展開して操作します。

  2. 貯蔵と比較すると、ガス代が安いことに注意してください。

今後の展望

基本的なストレージ最適化のアプローチをマスターした今、練習することが重要です。 提供されている例に取り組み、独自の例を作成してみてください。 次のセッションでは、関数の可視性の最適化とライブラリでのコードの再利用について詳しく説明します。 最適化は芸術であり、科学でもあることを心に留めておいてください。 実験を続けてください!

免責事項
* 暗号資産投資には重大なリスクが伴います。注意して進めてください。このコースは投資アドバイスを目的としたものではありません。
※ このコースはGate Learnに参加しているメンバーが作成したものです。作成者が共有した意見はGate Learnを代表するものではありません。
カタログ
レッスン3

リミックスによるガス最適化技術

基本的なストレージ最適化のアプローチをマスターした今、練習することが重要です。 提供されている例に取り組み、独自の例を作成してみてください。 次のセッションでは、関数の可視性の最適化とライブラリでのコードの再利用について詳しく説明します。 最適化は芸術であり、科学でもあることを心に留めておいてください。 実験を続けてください!

ストレージの最適化

イーサリアムのガス支出の大部分はストレージに集中しています。 イーサリアムネットワークの状態(ストレージ)を変更する各操作は、通常、コストがかかります。 その結果、データの保持方法とアクセス方法に集中することで、大幅なコスト削減につながる可能性があります。 このセッションでは、Remixでストレージを最適化する方法をいくつか見ていきます。

ストレージはなぜ高価なのですか?

イーサリアムブロックチェーンは、恒久的なストレージを提供します。 ブロックチェーンに保存されたすべてのものは、ブロックチェーンが存続する限り利用できますが、この永続性にはコストがかかります。 ストレージを最適化することで、コストが削減されるだけでなく、イーサリアムのグローバル状態が効率的に使用されるようになります。

パッキング保管変数

紹介

Solidityは変数をスロットに格納します。 各スロットは 32 バイトです。 変数が 1 つのスロットに収まる場合は、それぞれ 1 回の SLOAD または SSTORE 操作で読み取りまたは更新できます。

次の 2 つの契約について考えてみます。

硬度
最適化なし
プラグマの堅実さ^0.8.9;

コントラクト UnoptimizedStorage {
    uint256 public value1;
    uint256 public value2;
}
硬度
最適化あり
プラグマの堅実さ^0.8.9;

contract OptimizedStorage {
    uint128 public value1;
    uint128 public value2;
}
  1. 両方のコントラクトを Remix にデプロイし、変数を操作するときにガスの違いを確認します。

  2. 最適化されたバージョンでは、両方value1value2と が 1 つの 32 バイト スロットを共有します。

ストレージ・スロットの再利用

紹介

ストレージスロット、特に一時的なデータストレージを使い終わったら、スロットを削除またはゼロにして、ガスの払い戻しを受けることができます。

硬度
プラグマの堅実さ^0.8.9;

contract 返金例 {
    uint256 public temporaryDataです。

function storeTemporaryData(uint256 data) public {
        temporaryData = data;
    }

関数 clearTemporaryData() public {
        delete temporaryData;
    }
}
  1. このコントラクトを Remix にデプロイします。

  2. 一時データを格納し、クリアします。

  3. ガス代を確認してください。 手術で delete 得られるガスの払い戻しに注目してください。

ヒストリカル・データに対するストレージの代わりにイベントの使用

紹介

オンチェーンでデータにアクセスする必要がない場合は、保存するのではなく、イベントとして記録することを検討してください。 イベントは、ストレージ操作よりもはるかに安価です。

硬度
プラグマの堅実さ^0.8.9;

contract EventExample {
    イベントDataStored(uint256データ);

function storeData(uint256 data) public {
        emit DataStored(data);
    }
}
  1. Remix でコントラクトを展開して操作します。

  2. 貯蔵と比較すると、ガス代が安いことに注意してください。

今後の展望

基本的なストレージ最適化のアプローチをマスターした今、練習することが重要です。 提供されている例に取り組み、独自の例を作成してみてください。 次のセッションでは、関数の可視性の最適化とライブラリでのコードの再利用について詳しく説明します。 最適化は芸術であり、科学でもあることを心に留めておいてください。 実験を続けてください!

免責事項
* 暗号資産投資には重大なリスクが伴います。注意して進めてください。このコースは投資アドバイスを目的としたものではありません。
※ このコースはGate Learnに参加しているメンバーが作成したものです。作成者が共有した意見はGate Learnを代表するものではありません。
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.