Etherenum 以太坊 Gas 费用
Gas 定义
Gas 是运行以太坊虚拟机的燃料。 我们可以将其视为每次执行指令的付款。代码的执行由调用者以称为 Gas 的方式支付费用。
Gas 执行费用
Gas 执行费用由网络的矿工(他们是运行代码的节点)决定。Gas机制激励了对EVM执行时间的经济使用,同时也补偿了 EVM 执行者(即矿工)的工作。
Gas 消耗机制
一经创建,每笔交易都收取一定数量的 gas ,必须由原始交易发起人( tx.orgin )支付。 EVM 执行交易时,gas 将按特定规则逐渐耗尽。 无论执行到什么位置,一旦 gas 被耗尽(比如降为负值),将会触发一个 out-of-gas 异常。当前调用帧(call frame)所做的所有状态修改都将被回滚。
Gas Price
Gas Price 是交易发送者设置的一个值,发送者账户需要预付的手续费 = gas_price * gas 。如果交易执行后还有剩余, gas 会原路返还。 如果出现异常(exception),回退交易,已经用完的Gas就不会被退还。
由于EVM执行者可以选择是否包括交易。交易发送者不能通过设置一个低的 Gas 价格来滥用系统。
Gas Limit
在发起调用时,我们必须设置此调用上预计花费的最大gas消耗量(Gas Limit)。 例如,如果我们调用的代码进入永久循环,执行花费不会超过我们设定的最大消耗量(Gas Limit)。
由于每个区块有一个最大的Gas数量(区块 gas limit),它也限制了验证一个区块所需的工作量。