你需要为一笔交易支付多少 ether
?
你需要支付 gas spent * gas price
这么多的 ether
, 其中:
gas
计算单元的单位gas spent
是一笔交易中总共消耗的gas
数量gas price
是你愿意为每个gas
支付多少ether
支付更高gas price
的交易将被优先打包到区块中。
每花完的gas
会被退回到用户的账户中。
Gas Limit
那么你最多能花费多少gas
呢,这儿有两个方面的限制:
gas limit
(你希望你的交易使用多少gas
,这是你自己设定的,但是如果比所需的要少的话会导致交易失败,所有的修改会被回滚,但是gas
不会退还给你)block gas limit
(一个区块中的gas
上限,这是由整个网络来设定的)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Gas {
uint public i = 0;
// 交易完成前如果你发送的gas被全部使用完的话,交易会失败
// 所有的交易状态会被回滚
// 花掉的gas也不会回退
function forever() public {
// 这里的循环会花掉所有的gas
// 然后该交易会失败
while (true) {
i += 1;
}
}
}