3分钟Solidity: 1.9 Gas与Gas价格

47 阅读1分钟

如需获取本内容的最新版本,请参见 Cyfrin.io 上的Gas(代码示例)

你需要支付多少以太币来完成一笔交易?

你支付的以太币金额为:gas 消耗量 * gas 单价。其中:

  • gas 是计算单位
  • gas 消耗量是交易中使用的总 gas 量
  • gas 单价是你愿意为每单位 gas 支付的以太币金额

gas 单价越高的交易,越容易被优先打包进区块。未使用的 gas 会被退还。

Gas 上限

gas 消耗量有两个上限:

  • gas 上限(你愿意为交易支付的 gas 最大值,由你设定)
  • 区块 gas 上限(单个区块允许的 gas 最大值,由网络设定)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;

contract Gas {
    uint256 public i = 0;

     // 用完你发送的所有gas会导致交易失败。
     // 状态更改会被撤销。
     // 已消耗的gas不予退还。
    function forever() public {
        // Here we run a loop until all of the gas are spent
        // and the transaction fails
        while (true) {
            i += 1;
        }
    }
}

Remix Lite 尝试一下

solidity-gas

END