第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, 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.