0
点赞
收藏
分享

微信扫一扫

ETH GAS、GAS PRICE、GAS LIMIT 解析

实际支付的费用 = gas used * gas price

您可以花费的气体量有 2 个上限

  • gaslimit(您愿意为交易使用的最大gas,由用户个人配置)
  • block.gaslimit(区块块中允许的最大 gas,由网络配置)

下面看一下代码:

以下示例会将gas 消耗完毕,Try on ​​Remix​​ 可以自己的试试是什么效果。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Gas {
uint256 public i = 0;

// 该函数会用光所有的Gas
// i 的值会被回滚,但使用了的Gas 无法退出到账号。
// Gas spent are not refunded.
function forever() public {
while (true) {
i += 1;
}
}

function test_gas()
public
returns (
bool,
uint256,
uint256
)
{
//一个区块内允许的最大gas,由网络设置
uint256 gas_limit = block.gaslimit;
uint256 gas_left = gasleft();
bool is_same_as_gas_limit = gas_limit == gas_left;
uint256 gas_price = tx.gasprice;
i = 10;
gas_left = gasleft();
uint256 gas_used = gas_limit - gas_left;
return (is_same_as_gas_limit, gas_price, gas_used);
}
}

举报

相关推荐

0 条评论