第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讚同其觀點或證實其描述。
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, Thailand, 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.