注:EIP 1559被认为是以太坊的下一个大手术,对此,以太坊联合创始人Vitalik Buterin整理了一份FAQ,其首先介绍了以太坊当前交易费用机制存在的三大问题,并介绍了EIP 1559提案如何去缓解这些问题,此外他还对EIP 1559的limit值设定进行了一个解释,并针对可能出现的矿工反对情况提出了一个更改版方案。
1、什么是EIP 1559?
EIP 1559是一项改变以太坊费用市场的一项提议,主要的变动如下:
- 目前1000万 gas限额会被两个数值所取代,一个是“长期平均目标”(1000万),另一个是“每个区块的硬上限”(2000万);
- 交易需要支付一个基础费用(BASEFEE,它会被燃烧掉),该费用按区块进行调整,目标是确定一个value值,使得区块gas平均使用量保持在1000万左右;
从本质上讲,对于区块空间需求的短期波动,我们的目标不是让它都表现为交易费用的波动,而是让某些波动转化为区块大小的波动。
2、为何说EIP 1559是有利于以太坊的?
(答案复制于一篇旧贴)
目前,交易费用市场存在着三大问题:
- 交易费用水平的波动性与交易的社会成本之间的不匹配:成熟公链因为具有足够的使用量,因此区块是满的,因而这些区块链的交易费用极易波动。在以太坊平台上,最低的费用通常在2 gwei左右(注:10^9 gwei = 1 ETH),但有时会高达20-50 gwei,甚至有一次超过了200 gwei :https://etherscan.io/chart/gasprice。显然,这会造成许多效率低下的问题。
- 第一价格拍卖机制的效率低下问题:有关详细说明,请参见https://ethresear.ch/t/first-and-second-price-auctions-and-improved-transaction-fee-markets/2410。简而言之,在当前的方法下,交易发送者发布一笔收费的交易时,矿工会选择支付费用最高的交易,然后每个人都为其进行出价,在相关设计文献中,这种方法都被公认是效率低下的,因此就需要复杂的费用估算算法,但这些算法通常也无法很好的工作,经常会导致多付费用。另请参见https://blog.bitgo.com/the-challenges-of-bitcoin-transaction-fee-estimation-e47a64a61c72,了解比特币core开发者对当前费用估算法所涉及挑战的描述。
- 无区块奖励区块链的不稳定性问题:从长远来看,总量有限的区块链(包括比特币和Zcash)打算完全通过交易费用来回报矿工。然而,现有已知的结果表明,这可能会导致很多不稳定因素,比如激励矿工挖取交易费用的“姊妹区块”(sister block),打开更强大的自私挖矿攻击向量等等。而目前还没有很好的缓解措施。
而EIP 1559具有以下这些优点:
- 它缓解了由于费用波动导致的社会成本不匹配带来的经济效率低下问题。这里有一个相当微妙的经济论据,请参阅https://ethresear.ch/t/draft-position-paper-on-resource-pricing/2838中提及论文的第16-20页(尽管我建议大家阅读整篇论文),以了解详情。从直觉上看,这种费用调整机制在短期内看就像是一个固定费用,而从长远来看,它代表着一个上限。Martin Weitzman在1974年撰写的论文中提出的论点表明,在基本上公链会并存的背景下,固定费用可能要比设置一个上限要更好。
- 它用一个固定价格的销售来代替拍卖(除非在短期内,区块完全填满,直到费用赶上),从而消除了第一价格拍卖机制的低效性,并使费用估算变得非常简单:如果你能支付得起,则计算下一个区块的费用f,否则就不用。
- 它创建了一种类似于永久性区块奖励的机制,从而缓解了仅收费区块链(指没有新区块奖励的区块链)的许多不稳定问题,而无需实际永久发行。
3、现在的费用市场真的那么低效吗?
是的,在常规区块中,平均gas价格和第十个百分位数gas价格之间的差异, 约为中位数的3倍和均值的5-8倍。人们不必要支付过多的钱。
而没有多付的每个人,都会遭受1-2分钟,甚至更长时间的延迟,而这种延迟实际上并没有使任何人受益。无论给定的负载单位,是在时间N,还是在时间N+60到达链上,链的总负载都是相同的。至少在正常情况下,参与者在费用市场机制中“表达低时间偏好”并没有实际的社会效益,这是纯粹的无谓损失。而如果有更多的交易被立即纳入进来,我们都会过得更好,而这是EIP 1559所允许的。
4、在市场需求量大的时期,EIP 1559是否会对节点和矿工造成过大的压力?
即使在短期内,EIP 1559最多也就把区块大小增加2倍。每一个“满区块”(即gas量达到2倍TARGET值的区块)会增加1.125倍的基本费用(BASEFEE),因此一系列恒定满区块将每20个区块(平均约4.3分钟)增加10倍的gas价格。因此,这种重链负载的持续时间实际上不会超过~5分钟。
请注意,目前由于区块生产速度的差异,大约每〜63888个块(约10天)会随机发生一次持续5分钟的双负荷时期。因此,EIP 1559的引入,不会给系统带来任何前所未有的负载。
此外,gas限制仅为1000万,而不会更高,这在很大程度上是合理的,这并不是因为硬网络限制(叔块率接近历史低点),而是出于对长期性质的一种担忧:
- 更高的叔块率带来的中心化风险:如果叔块率飙升至20%,则将大大有利于联系良好的大型矿池;
- 限制状态大小;
- 短时间离线后难以同步;
在这三种情况下,重要的不是在很短的窗口期内的容量上限,而是长期的平均容量。叔块率在奇数小时内为2%,在偶数小时内为18%,对上述三种情况都有相同的影响,因为叔块率始终为10%。由于EIP 1559仍将长期gas使用量限制在每个区块约1000万的平均值,因此它不会影响长期平均值。
5、与现状相比,使用EIP 1559之后,高使用率的情况下会是什么样的?
考虑一个“数学上理想的峰值”(例如,这可能在现实生活中发生,像突然的市场事件导致DEX上有很多套利机会,然后就有很多对已清算的CDP进行竞价的活动等),然后就有了价值N * 1000万 gas的交易,其中每一笔交易都有很高很高的gas价格,并且所有的交易都被广播了。
在当前的费用机制下,这将导致以下的情况:
- 接下来的N个区块被专用于填充新优先(spiky)交易;
- 在那之后,其他的交易,以及人们在峰值之后发送的交易,都会按gas价格从高到低来依次实现;
- 一名普通用户需要等待超过N个区块;
现在,我们再考虑使用EIP 1559的情况:
- 接下来的N / 2个区块专门用于填充新的优先(spiky)交易,而这些区块的gas量是正常区块的两倍;
- 如果发送的其他所有交易的gas价格上限均等于旧的gas价格,那么接下来的N / 2个区块将是空的,之后一切都会回复正常。但实际上,更高优先级的交易将设定更高的gas价格上限,并首先被区块纳入,然后再是其他交易;
前者的情况下,普通用户必须等待超过N个区块,而后者的情况下,普通用户等待的则是N / 2个区块。
因此,即使包括峰值之后的“恢复期”,在此期间,区块容量将比正常情况小,大多数交易也会更快地被区块链纳入。
下面是一个非常粗略的模拟(这里有很多奇怪的假设,但是很难对一个涵盖供需曲线和等待时间的完整系统进行建模),电子表格源在这里。
6、 在出现更大、更长时间的峰值(例如一天之内的峰值)下,EIP 1559能做什么?
能做的事不多。基本费用(BASEFEE)会上升,开始会有一段很短的时间,一些交易会更快地进入,但之后,费用市场将像在“普通条件”下一样运作,只是在一个更高的收费水平上。EIP 1559的主要好处是,当费用较高时,常规收费市场效率低下的危害会显得更大,因此拥有一个运行良好的费用市场会变得更加重要。
7、为什么是限制=目标值*2 ?为什么不是乘4或8 ?
超过2是很容易的。限制/目标的比率越高,EIP 1559的费用市场效率收益就越大。这取决于我们愿意接受的短期峰值有多严重,2倍是一个相当保守的数字,我们甚至可以在启动时以2为倍数,并随着时间的推移增加这个倍数,但前提是在出现短期峰值的情况下,网络能够运行良好。
8、为什么矿工会纳入交易?
该EIP包含一个交易发送者可包含的“tip”费用,该tip费用将发送给矿工。而它有两个功能:第一,如果突然出现比预期多得多的交易,矿工们将首先包含tip费用更高的交易,因此基于费用的优先级机制会作为一个备份存在。其次,它补偿了矿工挖出叔块的风险。
计算出补偿叔块风险的tip费用水平约为0.8 gwei(叔块平均获得1.67 ETH奖励,而不是2 ETH,因此约有0.33 ETH 的损失,1000 万 gas区块与空区块相比,叔块率增加约0.025,因此1 gas的预期成本为=330m/10m*0.025=0.825gwei)。
这个 tip费用是独立于基础费用(BASEFEE)的,因此用户可自信地通过客户端实现设置1-1.5 gwei ,并期望他们的交易被矿工接受。
9、矿工们就没有动机进行合谋,通过使所有区块的容量都不足一半来压低基础费用(BASEFEE)吗?
一般来说,这种策略的有效性是有限的,因为除非几乎所有人都串通好了,否则未被纳入区块的一笔交易将包含在下一个区块中,因此此操作对长期基础费用的影响可以忽略不计。
然而,矿工能做的是一种“垄断定价”。假设交易发送者愿意支付一些额外的费用,以避免延迟一个区块。矿工可拒绝接受不包含最低 tip费用T
的交易。他们会损失一些费用,但如果发送者重视你将成为下一个矿工的可能性,并充分考虑他们的交易而增加费用,则矿工有可能从中受益,但总的来说,这种策略严重不利于矿工。
请注意,即使采用这种策略的矿工成功了,在增加收入的幅度上,其他的矿工会高于其自身(因为其他矿工会因为他的行为而免费搭乘更高的tip费用),因此这不是一个中心化向量。
这不会使基础费用(BASEFEE)降到零,相反,它会达到一种平衡,即基础费用(BASEFEE)仍然是大部分费用,而小费tip则占据剩余的费用。这是因为,除非矿工是串通好的(在这种情况下,我们会面临更大的问题),否则矿工将承受不纳入交易的全部成本,而只会从更高的tip小费中获得一些好处。
如果社区仍然认为矿工采用这种策略的风险过高,我们可以将EIP 1559的部分收入(例如50%)引导到一个池中,从中抽取一小部分用于增加矿工的区块奖励。这确保了矿工从高基础费中获益,进一步降低了这种攻击的可能性。
以下是一份拟议的EIP变更示意方案:
- 将帐户0x35定义为
FEE_SMOOTHING_BUFFER
,并定义FEE_SMOOTHING_CONSTANT = 8192
; - 在区块奖励中添加一个附加项(基本区块奖励和叔块及侄块奖励同时添加)。设
smoothing_reward = FEE_SMOOTHING_BUFFER.balance // FEE_SMOOTHING_CONSTANT
。将smoothing_reward wei从FEE_SMOOTHING_BUFFER
转移至block.coinbase
; - 应用该区块奖励规则后,来自区块的EIP-1559费用的1/2(四舍五入)会被添加到
FEE_SMOOTHING_BUFFER
的余额中。其余部分(即剩下的1/2)会被燃烧掉;
请注意,在权益证明(PoS)的背景下,最好执行秘密leader节点选举,以及对早期披露的惩罚,以防止验证者仅接受高tip费用,并从中获得全部好处,因为交易发送者将很快知道哪些验证者正在创建区块。