บทเรียนที่ 2

ガスコストの理解

再びようこそ! ガスの基礎を理解し、基本的なスマートコントラクトを操作したところで、次はガスコストの複雑さを深く掘り下げてみましょう。 このレッスンでは、イーサリアムの基本的なガス操作について説明し、Remix IDE内の操作のガスコストを特定する方法を説明します。

イーサリアムの基本的な運用とガス代

運用コスト

イーサリアムでは、すべての操作にガスコストがかかります。 一般的なコストには、次のようなものがあります。

  • 基本コスト: 変数の追加や設定などの基本的な操作。
  • メモリ コスト: メモリにデータを格納または取得します。
  • ストレージコスト:イーサリアムの状態とのやり取り(コントラクトストレージの更新など)は、通常、最もコストがかかります。

多くのガス最適化手法では、より高価な操作を安価な操作に交換する必要があるため、これらを理解することが重要です。

Remixでのガスコストの特定

Remixを使用すると、契約業務で消費されるガスを非常に簡単に識別できます。

手続き

  1. 静解析: 「リミックス」のタブ(顕微鏡アイコンで表されます)に移動します Analysis 。 この強力なツールは、コード内の潜在的な落とし穴と最適化の機会に関する洞察を提供します。

  2. デプロイと対話: (レッスン 1 で行ったように) コントラクトを展開した後、各対話にガスの見積もりが表示されます。 関数を呼び出すと、使用されているガスが右下のペインに表示されます。

  3. 詳細ペイン: 関数をデプロイまたは操作するときに、トランザクションログ(右下)の下矢印をクリックします。 これにより、ログが展開され、トランザクションの詳細なガスコストが表示されます。

実習:ガス重作業の特定

サンプルコントラクトとその操作を評価してみましょう。

硬度
SPDX-ライセンス識別子: GPL-3.0
プラグマの堅実さ^0.8.9;

契約ガスデモ {
    uint256パブリックカウント。
    mapping(address => uint256) public balances;

関数increment()パブリック {
        count += 1;
    }

function updateBalance(uint256 newBalance) パブリック {
        balances[msg.sender] = newBalance;
    }
}
  1. Remix 経由で Goerli Testnet にコントラクトを GasDemo デプロイします。

  2. 関数を数回操作します increment

  3. 取引明細で使用ガスを確認してください。

  4. 次に、関数を操作し updateBalance て、さまざまなバランスを設定します。

  5. もう一度、使用されているガスを確認してください。

噛み締める:

  • どの機能がより多くのガスを消費し、その理由は?(ヒント:各機能の近くで消費される推定ガスを表示しました)
  • マッピングの更新は、単純なカウンターのインクリメントと比較して、ガスの観点からどのようになりますか?

要約と次のレッスンの準備

ここまでで、イーサリアムのスマートコントラクトにおけるガスの複雑さについての理解を深めました。 Remixで練習することで、さまざまな操作がトランザクションの総ガスにどのように影響するかを視覚化して把握できます。 次のレッスンでは、最適化手法に飛び込み、契約をよりガス効率の高いものにする方法を学びます。

好奇心を持ち続け、実験を続けてください!

ข้อจำกัดความรับผิด
* การลงทุนคริปโตมีความเสี่ยงสูง โปรดดำเนินการด้วยความระมัดระวัง หลักสูตรนี้ไม่ได้มีไว้เพื่อเป็นคำแนะนำในการลงทุน
* หลักสูตรนี้สร้างขึ้นโดยผู้เขียนที่ได้เข้าร่วม Gate Learn ความคิดเห็นของผู้เขียนไม่ได้มาจาก Gate Learn
แคตตาล็อก
บทเรียนที่ 2

ガスコストの理解

再びようこそ! ガスの基礎を理解し、基本的なスマートコントラクトを操作したところで、次はガスコストの複雑さを深く掘り下げてみましょう。 このレッスンでは、イーサリアムの基本的なガス操作について説明し、Remix IDE内の操作のガスコストを特定する方法を説明します。

イーサリアムの基本的な運用とガス代

運用コスト

イーサリアムでは、すべての操作にガスコストがかかります。 一般的なコストには、次のようなものがあります。

  • 基本コスト: 変数の追加や設定などの基本的な操作。
  • メモリ コスト: メモリにデータを格納または取得します。
  • ストレージコスト:イーサリアムの状態とのやり取り(コントラクトストレージの更新など)は、通常、最もコストがかかります。

多くのガス最適化手法では、より高価な操作を安価な操作に交換する必要があるため、これらを理解することが重要です。

Remixでのガスコストの特定

Remixを使用すると、契約業務で消費されるガスを非常に簡単に識別できます。

手続き

  1. 静解析: 「リミックス」のタブ(顕微鏡アイコンで表されます)に移動します Analysis 。 この強力なツールは、コード内の潜在的な落とし穴と最適化の機会に関する洞察を提供します。

  2. デプロイと対話: (レッスン 1 で行ったように) コントラクトを展開した後、各対話にガスの見積もりが表示されます。 関数を呼び出すと、使用されているガスが右下のペインに表示されます。

  3. 詳細ペイン: 関数をデプロイまたは操作するときに、トランザクションログ(右下)の下矢印をクリックします。 これにより、ログが展開され、トランザクションの詳細なガスコストが表示されます。

実習:ガス重作業の特定

サンプルコントラクトとその操作を評価してみましょう。

硬度
SPDX-ライセンス識別子: GPL-3.0
プラグマの堅実さ^0.8.9;

契約ガスデモ {
    uint256パブリックカウント。
    mapping(address => uint256) public balances;

関数increment()パブリック {
        count += 1;
    }

function updateBalance(uint256 newBalance) パブリック {
        balances[msg.sender] = newBalance;
    }
}
  1. Remix 経由で Goerli Testnet にコントラクトを GasDemo デプロイします。

  2. 関数を数回操作します increment

  3. 取引明細で使用ガスを確認してください。

  4. 次に、関数を操作し updateBalance て、さまざまなバランスを設定します。

  5. もう一度、使用されているガスを確認してください。

噛み締める:

  • どの機能がより多くのガスを消費し、その理由は?(ヒント:各機能の近くで消費される推定ガスを表示しました)
  • マッピングの更新は、単純なカウンターのインクリメントと比較して、ガスの観点からどのようになりますか?

要約と次のレッスンの準備

ここまでで、イーサリアムのスマートコントラクトにおけるガスの複雑さについての理解を深めました。 Remixで練習することで、さまざまな操作がトランザクションの総ガスにどのように影響するかを視覚化して把握できます。 次のレッスンでは、最適化手法に飛び込み、契約をよりガス効率の高いものにする方法を学びます。

好奇心を持ち続け、実験を続けてください!

ข้อจำกัดความรับผิด
* การลงทุนคริปโตมีความเสี่ยงสูง โปรดดำเนินการด้วยความระมัดระวัง หลักสูตรนี้ไม่ได้มีไว้เพื่อเป็นคำแนะนำในการลงทุน
* หลักสูตรนี้สร้างขึ้นโดยผู้เขียนที่ได้เข้าร่วม 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.