レッスン2

什麽是Gas成本?

歡迎回來!想必大家已經對gas有了基本的了解,併運行了基本的智能合約,現在我們將深入探討gas成本這一概念,併指導大家完成以太坊中的基本gas操作。你將學會如何在Remix IDE中查看各個操作的gas成本。

基本的以太坊操作和Gas成本

運營成本

在以太坊中,每個操作都會産生一定的gas成本。一些常見的成本包括:

  • 基本成本:基本操作,如添加和設置變量。
  • 內存成本:在內存中存儲或檢索數據。
  • 存儲成本:更新以太坊狀態(如更新合約存儲)。存儲成本通常是最昂貴的。

了解常見的成本非常重要,因爲許多gas優化策略即是用較便宜的操作代替較昂貴的操作。

在Remix中了解Gas成本

通過Remix,你可以輕鬆地了解我們的合約操作所消耗的gas。

步驟

  1. 靜態分析:進入Remix中的Analysis選項卡(顯微鏡圖標)。此工具將提供代碼中的潛在問題和優化機會。

  2. 部署和運行:部署合約後(在第1課中已經執行),每次運行合約都將顯示一個gas估值。當調用函數時,使用的gas將會在右下角的窗格中顯示。

  3. 詳細信息窗格:部署或運行函數後,單擊交易日誌(右下角)中的曏下箭頭,展開日誌,查看交易的詳細gas成本。

實踐:了解gas消耗較多的操作

請看一個示例合約及其操作:

Solidity
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.9;

contract GasDemo {
    uint256 public count;
    mapping(address => uint256) public balances;

    function increment() public {
        count += 1;
    }

    function updateBalance(uint256 newBalance) public {
        balances[msg.sender] = newBalance;
    }
}
  1. 通過Remix在Goerli測試網上部署GasDemo合約。

  2. 多次運行increment函數。

  3. 在交易詳情中查看使用的gas。

  4. 運行updateBalance函數,設置不衕的餘額。

  5. 再次查看使用的gas。

思考:

  • 哪個函數消耗的gas更多,爲什麽?(註意:每個函數附近都顯示了預估的gas消耗
  • 更新映射與增加簡單計數器在gas消耗上有何不衕?

小結

現在,大家已經加深了對以太坊智能合約中gas的理解。我們通過Remix進行實踐,掌握了不衕操作如何影響交易的總gas成本。在下一章中,我們將深入探討優化策略,學習如何讓合約消耗較少的gas。

請堅持探索,不斷嘗試!

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

什麽是Gas成本?

歡迎回來!想必大家已經對gas有了基本的了解,併運行了基本的智能合約,現在我們將深入探討gas成本這一概念,併指導大家完成以太坊中的基本gas操作。你將學會如何在Remix IDE中查看各個操作的gas成本。

基本的以太坊操作和Gas成本

運營成本

在以太坊中,每個操作都會産生一定的gas成本。一些常見的成本包括:

  • 基本成本:基本操作,如添加和設置變量。
  • 內存成本:在內存中存儲或檢索數據。
  • 存儲成本:更新以太坊狀態(如更新合約存儲)。存儲成本通常是最昂貴的。

了解常見的成本非常重要,因爲許多gas優化策略即是用較便宜的操作代替較昂貴的操作。

在Remix中了解Gas成本

通過Remix,你可以輕鬆地了解我們的合約操作所消耗的gas。

步驟

  1. 靜態分析:進入Remix中的Analysis選項卡(顯微鏡圖標)。此工具將提供代碼中的潛在問題和優化機會。

  2. 部署和運行:部署合約後(在第1課中已經執行),每次運行合約都將顯示一個gas估值。當調用函數時,使用的gas將會在右下角的窗格中顯示。

  3. 詳細信息窗格:部署或運行函數後,單擊交易日誌(右下角)中的曏下箭頭,展開日誌,查看交易的詳細gas成本。

實踐:了解gas消耗較多的操作

請看一個示例合約及其操作:

Solidity
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.9;

contract GasDemo {
    uint256 public count;
    mapping(address => uint256) public balances;

    function increment() public {
        count += 1;
    }

    function updateBalance(uint256 newBalance) public {
        balances[msg.sender] = newBalance;
    }
}
  1. 通過Remix在Goerli測試網上部署GasDemo合約。

  2. 多次運行increment函數。

  3. 在交易詳情中查看使用的gas。

  4. 運行updateBalance函數,設置不衕的餘額。

  5. 再次查看使用的gas。

思考:

  • 哪個函數消耗的gas更多,爲什麽?(註意:每個函數附近都顯示了預估的gas消耗
  • 更新映射與增加簡單計數器在gas消耗上有何不衕?

小結

現在,大家已經加深了對以太坊智能合約中gas的理解。我們通過Remix進行實踐,掌握了不衕操作如何影響交易的總gas成本。在下一章中,我們將深入探討優化策略,學習如何讓合約消耗較少的gas。

請堅持探索,不斷嘗試!

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