Insight EIP-1559是以太坊Gas的救星吗

感谢Automata的Deli Gong给予的宝贵意见!

EIP-1559 前以太坊gas费是怎么算的?

在以太坊中,交易所需的 gas 费计算方式是:

TransactionFee = GasPrice × GasLimit

其中 Gas Limit 代表你愿意为这笔交易支付的最大 gas 量,这通常取决于交易的复杂程度。Gas Price 指的是 Gas 的价格,即你愿意为每个单位的 gas 所支付的 ETH 数量。

目前以太坊费用机制使用的是首价拍卖模式。用户需要向以太坊网络提交出价(他们愿意支付的 Gas Price)。每当生成一个新的区块时,矿工将把 Transaction Fee 最高的那些交易打包进区块里。每一笔交易都会按照它的出价来支付 gas 费。

我们通常说的“支付更多的 Gas 费” 意思是增加某笔交易的 Gas Price 以获得被打包的优先权。例如在 Metamask 中,有 “慢”、“平均” 和 “快” 这 3 个 Gas Price 选项供用户选择,用户通过这个选项支付更高的 Gas Price 来加快自己的交易被打包。

问题在于,用户与钱包都无法准确估计他们应该支付的 gas 费,事实上用户总在支付高于他们本应支付的价格,来确保交易的顺利进行。我们可以从下图中看出,ETH 交易费的平均值一直高于它的中位数,并且当网络拥堵的时候差值尤其的大。

ETH 交易费的 平均数 / 中位数 (来源: CoinMetrics)

EIP-1559会改变什么?

EIP-1559 可以称作是以太坊历史上最令人期待的提案之一。它对以太坊网络的交易费机制进行了很大改造,主要可以概括为:

引入弹性区块大小的机制,每个区块的最大 Gas Limit 被提升至原来的 2 倍,矿工可以在网络拥堵的时候弹性地改变区块的大小。原本单一的交易费被更改为固定费用 (Base Fee)加上小费(Inclusion Fee)的模式,固定费用是必须支付的部分,并且会根据上一个区块的 Gas 使用情况进行动态调整。且每个区块的固定费用部分都会被烧毁,不会给到矿工。

弹性区块大小允许矿工动态扩张或缩小区块大小来处理暂时性的网络拥堵。有了 EIP-1559 之后,每区块的目标 Gas 限值还是 15M,  但是最大 Gas 限值会从 15M 调整到 30M(差不多2倍)。如果区块中使用的 gas 量比目标 gas 限值少,那么代表网络是不拥堵的,下一个区块的固定费用会降低。如果如果区块中使用的 gas 量比目标 gas 限值多,那么代表网络是拥堵的,下一个区块的固定费用会升高。我们会在下文仔细讲解这种机制。总的来说,交易量的波动原先会转化为交易费的波动,而如今转化为区块大小的波动。

区块拥堵程度 (来源: IOSG Ventures)

EIP-1559 引入一种新的交易费用机制,来解决首价拍卖模型中的问题。每区块固定费用是“基础费用(Base Fee)”,给矿工的额外的激励是“小费(Inclusion Fee)”。所以交易费变为:

TransactionFee = BaseFee + InclusionFee

进一步分解:

TransactionFee = BaseGasPrice × GasLimit + InclusionFee

Base Gas Price 代表每个区块的 Base Fee 里的 Gas 的单价,每个区块的 Base Gas Price 是固定的,而且价格高低由前一个区块的拥挤程度来决定,

BaseGasPrice = PreviousBaseGasPrice × (1 + k × CongestionLevel)

其中 Congestion Level 代表区块的拥挤程度,Previous Base Gas Price 代表上一个区块的 Base Gas Price。k是调整速度系数,0 < k < 2。而根据 EIP-1559 的初始设定,k=1/8。拥挤程度会根据每区块中使用的 gas 量是否大于目标 gas 限值来决定。

CongestionLevel = (PreviousBlockGas / UsedTargetGasUsed - 1)

总结来说,我们可以看到,

0.875 × PreviousBaseGasPrice ≤ BaseGasPrice ≤ 1.125 × PreviousBaseGasPrice

假设 gas 限值相同的情况下,

0.875 × PreviousBaseFee ≤ BaseFee ≤ 1.125 × PreviousBaseFee

当网络拥堵时,每过一个区块后 Base Fee 最多会增加 12.5%,Base Fee 不断增加直到用户因为交易不再盈利而减少交易,所以这种机制可以缓解拥堵的网络;当网络不拥堵的时候,每过一个区块后 Base Fee 最多会减少 12.5%,Base Fee 的下降激励用户增加交易。

小费是用户付给矿工加速交易用的。小费是可选项,可以设置成零。矿工仍然用首价拍卖模式来优先选择有更多小费的交易来打包进下一个区块。

通胀还是通缩?

以太坊每年的通胀率为4%,每个区块会铸造 2 个 ETH 作为固定区块奖励。在 EIP-1559 中,Base Fee 里的 ETH 都会被烧毁,这会对 ETH 的价格产生通缩压力。

区块奖励分解 (来源: IOSG Ventures)

伦敦升级和 EIP-1559 提案已经在区块高度 10499401 部署在了 Ropsten 测试网。目前社区正在观察 EIP-1559 的表现,以及gas费会怎么变化。最近,许多文章和评论都刊登了http://watchtheburn.com/ 这个网站的截图,这个网站在监测有多少 ETH 被 Base Fee 燃烧掉。

 Ropsten 测试网上烧毁的 ETH (来源: watchtheburn.com)

截至目前,从区块高度 10499401 到 10512250,总共烧掉了 88571 个 ETH。也就是说在12859 个区块中燃烧了 88571 个 ETH,同时有 2 * 12859 = 25698 个 ETH 被铸造。这意味着 ETH 确实因为 EIP - 1559 变得“通缩”了!

但是 EIP-1559 在以太坊主网上线后也会是这个结果吗?我们觉得不会。

我们认为在 Ropsten 上之所以燃烧了这么多的 ETH,是因为网络有许多不寻常的连续的拥挤的区块,这些拥挤的区块将Base Gas Price 推到很高,并且持续了很长一段时间。一个很好的证明是区块高度 10503157 到 10504352,Base Gas Price 从 98.45 Gwei 增加到了 82851 Gwei,在 1195 个区块中增长了 841 倍。

Rospten测试网中区块高度为10499401 到 10506825 的基础费用价格 (来源: IOSG Ventures)

这种情况很特殊,更像是开发者在测试网上做的极端测试。

主网上线后不会出现相同的情况,因为逐步提高的 Base Fee 会迫使需求不那么强烈的用户不进行转账,进而把区块大小恢复到目标大小,从而降低 Base Fee。

以太坊社区的 @barnabemonnot 做的模拟展示了 Base Fee 到达一个峰值之后可能的走势   

Base Fee 模拟 (来源: @barnabemonnot)  

我们预测当主网高度拥堵的时候,一个常见的规律会是几个大型区块后紧接着几个小型区块。高度拥堵的情况不会超过5分钟,以太坊还是会通胀但是通胀率相对较低。

交易费会下降吗?

EIP-1559 主网上线之后,交易费会下降吗?是的,我们认为虽然降低交易费并不是 EIP-1559 提案的最终目的,但是它确实会降低以太坊网络的交易手续费。

首先,因为交易费被分为了 Base Fee 和小费两部分。过去人们增加 gas 单价来加快交易被打包确认,整个交易费被增大。而现在改成通过增加小费来加速交易被打包,这并不会影响到 Base Fee,Base Fee 仍然只是反映着网络的拥堵情况,小费则反映着用户对交易能否成功的紧急程度,这两个部分不会再混在一起了。因此用户更清楚自己至少需要出多少交易费,用户变得更加理性后会减少过度竞价,这样就能让 gas 费降下来。

Gas Fee 分解 (来源: IOSG Ventures)

第二,可变的区块大小可以在交易量大的时候作为缓冲,把 gas 费的波动转化为区块大小的波动。所以当交易量激增时,gas 费会比以前上涨得缓慢。

最后,EIP-1559 上线之初 Base Gas Price 会被设置为 1 Gwei,相较于最近 20+ Gwei 的 gas 价格,这会在刚上线的时候把 gas 费短暂地拉低。

另一方面降低 gas 费并不是 EIP-1559 的目的。它的目的更多的是想要让 gas 费的变化变得更加平稳,减少用户过度竞价,并且让gas费有更高的可预测性。

钱包和用户会怎么样呢?

钱包对 gas 费不再是估算而是精准计算,因为现在可以准确计算出下一个区块的 Base Gas Price 了,用户对交易费用的数额有更清楚的认知。钱包会显示下个区块的Base Gas Price,并且允许用户设置小费来加快打包。

钱包开始设计新的UI模板,以下是Metamask(非官方)和Status(非官方)的模板。

     

钱包页面模拟 (来源: @tvanepps from HackMD)

对用户来说,最大的不同就是他们不再需要猜测交易费用的高低,他们不用去猜测自己付的交易费够不够高,能不能被打包进区块;或者自己付的交易费用够不够低,有没有白白多支付费用。现在 Base Fee 就像一个定价销售,用户只需要决定是否能够接受这个定价。

用户可以根据下一个区块的 Base Gas Price 来设置一个 Base Gas Price Cap,即用户愿意支付的最大 Base Gas Price。这么做的原因是当用户进行支付时,可能已经有新的区块生成因此 Base Gas Price 发生了改变,而如果用户设置一个稍微高一点的 Base Gas Price Cap 就可以让他的交易在接下来的几个区块里被顺利打包。Base Gas Price Cap 和交易被打包区块的 Base Gas Price 的差额是会被退回给用户的。

这就是说,即使用户高估了下一个区块的 Base Fee,然后设置了一个过高的 Base Fee Cap,他也不会过度支付 Base Fee。例如下个区块的 Base Gas Price 是 200 Gwei,而用户设置的最大 gas 价格是 300 Gwei,如果交易是被下一个区块打包的,那用户还是只需要按照 200 Gwei 的 gas 价格来付费!这是一个对用户友好度的大改进!

矿工会怎么样呢?

毫无疑问,一些矿工会认为 EIP-1559 是一个坏消息。原本所有交易费都归矿工所有,而现在只剩下小费会给到矿工,而BaseFee的部分会被烧毁掉,因此矿工们将会失去部分收入。

区块奖励流出方向对比 (来源: IOSG Ventures) 

毫无疑问,一些矿工会认为 EIP-1559 是一个坏消息。原本所有交易费都归矿工所有,而现在只剩下小费会给到矿工,而BaseFee的部分会被烧毁掉,因此矿工们将会失去部分收入。对于MEV而言,矿工在EIP-1559后仍然有调整交易在区块中的顺序的能力,所以MEV的基本面保持不变。

下图是 Flashbots 基于MEV占比的矿工收入明细。我们假设对于一个非MEV交易,Base Fee 通常会比小费多很多,所以下图中大部分的橙色区域会被烧毁,小部分因为小费的存在而留下;而对于矿工MEV收益的部分,大部分MEV收益是来自于 Flashbots 里的 searcher 支付的打包费,和矿工通过往区块里混入自己的交易得到的收益。被烧毁的 Base Fee 和前两个部分相比十分小。所以下图中大部分的绿色区域会保留,大部分的MEV收益仍会被捕获到。

  矿工利润分解 (来源: Flashbots)

从长期前景来看,EIP-1559 给 ETH 带来通缩压力;ETH 的价格升值最终会让矿工受益。如果矿工在 ETH 数量上损失了25%,但 ETH 价格上涨了35%,矿工的美元收入仍然是不变的。

也有提案是说,与其烧掉所有的 Base Fee,不如将其中的一小部分与矿工分享。总而言之,所有这些都可以根据 EIP-1559 的表现进行协商和调整。

EIP-1559 会对 Flashbots 的使用有影响吗?

Flashbots 的用户是通过 EIP-1559 引入的新费用机制竞拍还是继续使用 Flashbots 呢?新费用机制的小费部分似乎可以用于竞拍。

Flashbots 提供的一个重要的功能叫做 pre-trading privacy,交易只有在被打包进区块之后才会被公开。Flashbots 使用首价密封投标拍卖的方式,所有用户同时提交密封的交易包以及竞价,没有竞拍者会提前知道其他人的交易包的内容和所出的竞价。所以用户不用担心被抢先交易,因为他的交易是全程被密封着的。

因为无法提供 pre-trading privacy,所以 EIP-1559 不能代替 Flashbots。假设套利者提交了一个能够盈利 $100 的交易进入内存池,并附上有 90$ 的小费。这个交易在进入池子的时候就会被公开,其他套利者可以复制他的交易,并且提交一个新的有更高小费的交易, 比如带有 $95 的小费的新交易。于是新的交易会被打包进区块,原来的套利者就因为被抢跑而失去了套利机会。EIP-1559 没办法改变这种情况,无法给用户提供抢跑保护。

没错,即使在 EIP-1559 上线之后,以太坊用户还是会大量使用Flashbots,来寻找进入区块无风险入口以及抢跑保护。

结论

EIP-1559 引入了新的 gas 费机制,用 Base Fee + 小费的模式代替了单一的费用机制。以太坊区块大小具有了弹性,由此将 gas 费的变化转嫁为区块大小的变化。在 EIP-1559 上线后, 以太坊网络的交易费会变的更低并且有更大的可预测性;ETH 仍会是通胀的状态但是通胀率会降低;以太坊网络拥堵的情况会得到缓解;用户体验度会得到提升。这些改变会大大提升以太坊的可用性,并让更多的用户最终向以太坊倾斜。

虽然矿工短期会损失一些收益,但是长远来看最终会享受到以太坊价格上涨带来的更多收益。矿工依然拥有调整区块中交易顺序的自由,所以 MEV 的基本面并没有被改变,但由于 Base Fee 的燃烧,矿工在 MEV 方面的收益会相应减少;EIP-1559 不能代替 Flashbots 提供 pre-trading privacy的功能,所以需要防止交易被抢跑的用户仍然需要使用 Flashbots。  

EIP-1559 已经在 Ropsten 测试网上线,之后会陆续登陆 Goerli、Rinkeby 和 Kovan 等测试网。在测试完备后,EIP-1559 预计会在7月底进行主网上线。