详解以太坊 EIP-1559 Gas 费用计算方法
原文标题:《 以太坊 EIP-1559 Gas 费用计算指南:在 Gas 异动下确保顺利交易 》
撰文:Blocknative
翻译:Yangz
当以太坊用 EIP-1559 升级了核心 Gas 费用市场后,交易从第一价格拍卖转变成了涉及基本费用和小费的混合系统。正如我们之前所介绍的,这为链上交易引入了新的复杂度。
为了进一步澄清这一点,我们将解释新的术语以及如何处理与 EIP-1559 交易费用相关的核心变量。
EIP-1559 交易的新术语
首先,复习一下:EIP-1559 改变了以太坊交易费用的计算方式以及这些费用的去向。现在必须注意三个独立的值,而不是一个单一的 Gas 价格。
基本费用(Base Fee),这是由网络本身决定的,随后被销毁。
最高优先费(Max Priority Fee),这是可选的,由用户决定,并直接支付给矿工。
每单位 Gas 的最高费用(Max Fee Per Gas),这是你愿意支付每单位 Gas 费用的最高绝对值,以使你的交易纳入到区块中。为了简洁明了,我们将它称为最高费用。
包括这些新字段的交易被称为类型 2,而带有原始 Gas 价格字段的传统交易仍被支持,被称为类型 0。注意:EIP-1559 并没有对「Gas 限额」(即交易被授权消耗的最高 Gas 量)带来变化。
基本费用的确定
基本费用由以太坊网络决定,而不是由寻求交易的终端用户或寻求验证交易的矿工设定。基本费用的目标是使区块完整度在 50%,并基于最近确认的区块内容。根据新区块的完整程度,基本费用会自动增加或减少。
比如:
如果上一个区块完整度正好是 50%,那么基本费用将保持不变。
如果上一个区块是完整区块(100%),那么下一个区块的基本费用将增加最多 12.5%。
如果上一个区块完整度超过 50%,但不到 100%,那么基本费用将增加 12.5% 以下。
如果上一个区块是空白区块(0%),那么下一个区块的基本费用将减少最多 12.5%。
如果上一个区块完整度超过 0%,但低于 50%,那么基本费用将减少 12.5% 以下。
这个新机制是为了帮助平滑交易费用,防止 Gas 费用突然飙升。谈到基本费用,最重要的是要记住:它是 100% 自动的,可直接从网络上读取。
设置优先费
最高优先费--通常也被称为矿工小费--是一种 「可选的」额外费用,直接支付给矿工,以激励他们将你的交易纳入区块。虽然最高优先费在技术上是可选的,但目前大多数网络参与者估计,交易一般需要至少 2.0 GWEI 的小费才能被纳入。尽管如此,特定的矿池可能会选择设置替代的最低纳入标准。
对于在正常、不拥挤的网络条件下提交的「典型」交易,最高优先费需要接近 2.0 GWEI。但是,对于顺序或包含在下一个区块中很重要的交易,或者当网络高度拥堵时,可能需要更高的最高优先费来优先处理你的交易。
最高优先费的一个微妙差别是,它代表了你愿意支付给矿工的最高小费。然而,如果基本费用加上最高优先费用超过了最高费用(见下文),最高优先费将被减少,以满足最高费用的上限。这意味着实际小费可能需要小于你的最高优先费,在这种情况下,你的交易对矿工的吸引力可能会降低。
计算最高费用
在介绍了基本费用和最高优先费用的基本情况后,来了解一下最高费用这个有点反直觉的概念吧。
最高费用是你愿意为每单位 Gas 支付的绝对最高金额,以使你的交易得到确认。在这里,事情可能会变得有点混乱--因为在大多数情况下,你的实际交易费用将低于你预先指定的最高费用。以下是原因阐述:
- 你交易的最低 Gas 价格是当前的基本费用。
- 然而,如果在你交易尚未完成时,基准费用增加了呢?那么,你的交易就有可能被卡住,或失败或被放弃。
- 因此,为了在 EIP-1559 下实现可预测的交易结算,目前认为最好的做法是设置一个预期基本费用增加的最高费用。但应该增加多少?理由又是什么?
- 我们符合 EIP-1559 标准的 Gas 估算器 目前使用以下简单的启发式方法来计算任何给定的基本费用和最高优先费用组合的推荐最高费用。最高费用 = (2 * 基本费用) + 最高优先费用
在计算最高费用时,将基本费用翻倍,可确保您的交易在连续六个 100% 完整的区块内保持可被纳入。以下是相关例子。
说明性例子:在六个区块中,从处理到不被处理
假设你的交易是在第 1 区块提交的,当时的基本费用是 100.0 GWEI。你选择设置 2.0 GWEI 的最高优先费用,所以你的最高费用计算为 2 * 100.0 + 2.0,即 202.0 GWEI。
但是,就在你提交你的交易时,出现了一个高调的 NFT 空投,网络需求激增。突然间,每个区块都成了完整区块--而不是上面讨论的 50%--所以基本费用按每个区块最高 12.5% 的比例增加。
因此:
正如你所看到的,需要连续 6 个 100% 的完整区块后才能使基本费用翻倍--在这个例子中,从 100.0 GWEI 到 202.7 GWEI。
实际上,通过这种方式设置你的最高费用,你的交易就得到了「保护」,避免在基准费用快速上升的情况下变得价格过低,从而无法被处理。
但是,如果基本费用没有如此快速增长呢?你将被收取低于你指定的最高费用。可参考上表。
- 请记住,您的交易是在第 1 块期间提交的,当时基本费用是 100.0 GWEI。您选择了 2.0 GWEI 的最高优先费,所以您的最高费用计算为 202.0 GWEI。
- 您的交易在第 4 区间被确认,此时基本费用为 142.2 GWEI。
- 您的交易费用由确认时的基本费用加上您的最高优先费用的价格决定。因此,你将为这笔交易支付 144.2 GWEI/Gas。
- 这比你指定的最高费用少了 57.6 GWEI/Gas。那么,这 57.6 GWEI/Gas 实际上是「节省」下来的,将留在你的钱包里。
- 值得注意的是,你的最高费用并没有从你的钱包中「提取」,然后部分被「退还」。相反,最高费用是「最高授权费用」的门槛。
- 如果你的交易在第 6 区块之前都没有被确认,那么在第 7 区块期间,它将变得不可处理--它不再是一个候选者,因为它的最高费用 202.0 GWEI 刚好低于了新的基础费用 202.7 GWEI。
最后,在上述情况下,如果你在计算最高费用时没有包括 2 倍的安全系数,而是将最高费用设定为最低的 102.0 GWEI,会出现怎样的情况?
- 你的交易在第一区间是可以处理的,因为你的最高费用仍然高于 100.0 GWEI 的基础费用。
- 然而,到了第二区块,你的最高费用就低于了新的基础费用 112.5 GWEI。
- 这时,你的交易将保持待定状态,直到基本费用下降并低于最高费用 102.0 GWEI。
- 或者,当网络高度拥堵时,你的交易可能会被完全放弃。
这就是为什么最高费用是反直觉的:
- 大多数时候--可能是绝大多数时候--你支付的交易费会比你的最高费用少。
- 但有时,特别是在网络高度拥堵的时期,你将被收取最高费用。
- 如果你选择碰运气,将你的最高费用设置得与当前的基本费用太接近,那么你就有可能使你的交易失败,且不再有资格被纳入区块。
为了实现可预测的交易结算性能,我们建议在最高费用计算中加入健康的安全系数。
MetaMask 中的 EIP-1559
默认情况下,MetaMask 的 10.0.0 版本会自动设置交易的最高优先费用。您可以用「编辑」按钮修改这些费用,可以选择低(确认速度最慢)、中或高(确认速度最快)费用。
此外,要手动指定交易的 Gas 限额、最高优先费和最高费用。具体请选择高级选项并下拉设置。