本文档介绍了在支持EIP-1559时可能需要考虑的一些概念,包括参考实现、附加资源、协调、BaseFee burn接口、变量和函数、交易支持、启动过程和Mockup资源等。EIP-1559旨在改进以太坊的交易费用机制。
注意:交易播种一个 maxPriorityFee
& maxFee
> 0。矿工可能不会直接按 maxPriorityFee
对 txn 池进行排序,因为在 maxFee
- maxPriorityFee
< baseFee
的情况下,maxPriorityFee
将会减少,以使交易保持有效。 如果 maxFee
< baseFee
,则交易无效。
变量 | 定义 |
---|---|
baseFeePerGas |
由协议生成,记录在每个区块头中。 表示 tx 包含在区块中所需的最小 gasUsed 乘数。 这是被燃烧的 tx 费用的一部分:baseFeePerGas * gasUsed 。 |
maxPriorityFeePerGas |
用户设置此值。 添加到交易,表示转到矿工的 tx 费用的一部分。 见 ⭐ 下文 |
maxFeePerGas |
用户设置此值。 表示用户愿意为其 tx 支付的最大金额(包括 baseFeePerGas 和 maxPriorityFeePerGas )。 maxFeePerGas 和 baseFeePerGas + maxPriorityFeePerGas 之间的差额“退还”给用户。 |
baseFeePerGas
可能会增加/减少高达 12.5%,具体取决于该区块相对于前一个区块的完整程度:例如,100% 完整 -> +12.5%,50% 完整 -> 相同,0% 完整 -> -12.5%。gasLimit
将翻倍(例如,15m 到 30m),因此 1559 后的“50% 完整”区块相当于 1559 之前的 100% 完整区块。baseFeePerGas
将设置为 1 gwei。 由于整数数学,它不能低于 7 wei(0.000000007 gwei)。maxPriorityFeePerGas
maxPriorityFeePerGas
有三个用途:
以下是如何考虑为 maxPriorityFeePerGas
建议用户默认值。
- 🔀 补偿矿工承担的叔块/ommer 风险 + 将交易包含在区块中的固定成本;
这背后的理由是,如果优先级费用为 0,矿工只会挖掘空块。 因此,为了使在区块中添加交易符合他们的经济利益,他们必须得到补偿,而不仅仅是由于在区块中添加交易而产生的边际叔块风险(以及运行交易的固定成本,但与叔块风险相比,这些成本可以忽略不计)。
叔块风险有两个主要组成部分:规范区块与叔块之间的区块奖励差异以及区块中损失的 MEV。
此分析 根据区块中的平均 MEV 量计算要设置的正确 maxPriorityFeePerGas
(假设为 15m gas)(注意:p=0
,最后一个图,使用最准确的数字)。 Flashbots 有一个仪表板 显示每个区块的平均 MEV。
查看今天的仪表板,我们看到:
这意味着过去几天中,每个区块的大概 MEV 为 0.2ETH。
查看 Barnabé 的图表,我们看到:
在 0.2ETH/区块的情况下,补偿叔块风险的正确 maxPriorityFee
为 1 gwei。 鉴于这将补偿中间 MEV 区块,我们可能应该稍微提高它,以便即使 MEV 高于平均水平,包含交易也能获利。
查看 Flashbots 上的 MEV 分布,绝大多数区块的 MEV <1 ETH,这将代表 2.5 gwei 的费用。 2 gwei 可能是非常好的默认值“你将在接下来的几个区块中获得”。 1 gwei 可能是个不错的“慢速”值。
- 💰 允许机会成本高的用户向矿工支付溢价;
为此,应该足以提供一个“高级”选项,用户可以在其中手动将其 maxPriorityFee
设置为他们想要的任何值。
- 📈 在需求超过可用区块空间时,允许头矿费上发生首次价格拍卖(即 1559 前的费用模型)。
在这种情况下,估计 maxPriorityFee
变得与估计当前 gasPrice
相同。 “智能”实现可以查看过去 N 个区块的完整程度,以确定我们是否处于高度拥塞状态。
gas price
将被解释为 maxFeePerGas
和 maxPriorityFeePerGas
,这意味着 baseFeePerGas
被烧毁,任何额外的费用都归矿工所有。 以下是一些示例,假设 baseFeePerGas
为 100 gwei:1559 风格的 tx:用户发送一个
maxFeePerGas
为 250 gwei 和maxPriorityFeePerGas
为 5 gwei 的 tx。 用户将支付 100+5=105 gwei,其中 100 将被烧毁,5 将转给矿工。遗留(1559 前)tx:如果用户有一个
gasPrice
为 250 gwei 的遗留 tx,那么maxPriorityFeePerGas
也将被设置为 250 gwei,用户将为他们的交易支付 250 gwei/gas,其中 100 将被烧毁,250-100=150 将转给矿工。
priority fee
转到矿工,并且 maxFeePerGas
与 baseFeePerGas + maxPriorityFeePerGas
之间的差额将退还给用户。Transaction Type
设置为 0x2
当 EIP-1559 在伦敦升级中上线时(计划于 8 月 4 日),baseFeePerGas
将设置为 1 gwei。 这意味着,起初,交易将通过小费上的首次价格拍卖进行竞争,因为 baseFeePerGas
达到以该价格达到约 15m gas /100% 需求的速率。
如果你假设分叉日期的市场价格为 250 gwei,这意味着 baseFeePerGas
需要经过约 50 个区块才能到达那里,或者略低于 15 分钟。
因此,为了使 baseFeePerGas
稳定下来,可能最简单的方法是_不要_至少在分叉后 15-30 分钟内使 1559 风格的交易成为默认交易。
gasUsed
比 gasLimit
(分叉后为 30m)更接近 gasTarget
(当前为 15m):这意味着我们已经为 baseFeePerGas
找到了接近市场价格的价格;baseFeePerGas
与上一个区块的 baseFeePerGas
的 +/- 5%:这意味着 baseFeePerGas
已停止增加并且有些稳定;gasPrice
,计算 baseFeePerGas
达到该数量所需的完整区块数量(每个完整区块 +12.5%),添加一个小的缓冲区或许可以使用这 3 种方法的组合,即:12.5m < gasUsed
< 17.5m 并且 parentBaseFee
+/- 5% 来自 baseFeePerGas
并且 blocksSinceFork
> 100
我们将随着钱包团队的努力添加 UI 资源:
- 原文链接: hackmd.io/@q8X_WM2nTfu6n...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!