以太坊难度炸弹机制是否该被取消?技术分析缪尔冰川硬分叉升级对以太坊生态的影响。

原文标题:《缪尔冰川升级分析》
撰文:钱柏均,就职于 Hashkey Capital Research

本文研究提案 EIP2384 缪尔冰川(Muir Glacier)升级对以太坊生态的影响,并分析了开发团队未来的措施走向。本文的结论是:缪尔冰川本次升级将仿区块号回退到 200,000 区块高度,有效地大幅延长难度炸弹(Difficulty Bomb)爆发的时间,并且回退到最初始难度值,有助于较好预测下次难度炸弹爆发的时间,对于平和的将以太坊升级至「宁静」阶段有非常重要的意义;然而本次临时推迟也让以太坊社区讨论是否彻底取消难度炸弹机制,以避免多余成本消耗以及硬分叉带来的安全问题,未来在以太坊平顺升级的大前提下,开发者社区势必要做出取舍。

2020 年 1 月 2 日,以太坊主网在区块高度 9,200,000 时已完成提案 EIP2384,别称缪尔冰川(Muir Glacier)硬分叉升级,提案唯一目的是将难度炸弹再推迟 400 万个区块,预计为 611 天。而缪尔冰川硬分叉是以太坊自 2017 年起第三次推迟难度炸弹。推迟的原因主要是难度炸弹再次于 2019 年 10 月 5 日在第 8,600,000 个区块上开始显现其影响。当时的平均出块时间有所增加,且自第 8,900,000 个区块以来,平均出块时间大约是 14.3 秒。出块时间的延长也逐渐增加矿工挖矿的成本,进而造成矿工无利可图且系统网络堵塞。因此此次缪尔冰川升级以推迟难度炸弹是势在必行,在「宁静」阶段来临前避免让冰川时代提前到来。

一、以太坊难度炸弹

(一)由来

以太坊「难度炸弹」是以太坊开发人员 2015 年嵌入的一段代码,通过逐步增加区块链挖矿难度,从而人为减慢以太坊出块速度,而这个难度值将会随着区块高度增加而在一个始点开始指数上升,短时间大幅增加挖矿难度,使整个生态进入冰川时代(The Ice Age)。

这一机制是为了使以太坊从工作量证明机制算法转向权益证明机制算法而设计的。原因是最初 Vitalik 提出利用 Casper 混合 PoW/PoS 系统以作为以太坊 1.0 过渡至 2.0 的方式,而难度炸弹则作为使矿工舍弃原有工作量证明模式而转为权益证明模式的诱因,因为即使在以太坊过渡到权益共识机制之后,矿工仍可能选择继续使用工作量证明机制。如果有部分矿工坚持以工作量证明模式的以太坊,那么以太坊可能会产生硬分叉,造成旧链与新链并存的结果。

因此在以太坊升级为 2.0 后,开发者需要让工作量证明挖矿难度值逐渐以指数递增,直到难度炸弹爆发,进入冰川时代,迫使所有矿工放弃旧链,以完成以太坊 2.0 的转型。

(二)以太坊难度炸弹数学公式

以下公式表述以太坊每个新产生区块的难度是如何设计:

难度炸弹为何一直推迟?技术分析缪尔冰川升级如何影响以太坊生态

该公式由两个部分所组成,

难度炸弹为何一直推迟?技术分析缪尔冰川升级如何影响以太坊生态

第一部分为前后相连两区块难度值的调整,而其中的 T 是前后两区块生成的时间差,也就是难度值调整的最大因素。当 T < 10 时,第一部分将会等于:

难度炸弹为何一直推迟?技术分析缪尔冰川升级如何影响以太坊生态

难度值会相应提高以减缓出块速度。当 10 ≤ T < 20 时,第一部分为 0 (整除法),也确保以太坊最初设定目标出块时间 14 秒时难度不变,而当 T ≥ 20 时,区块难度会降低,以增加出块速度。可参照下图作更直观解释。

难度炸弹为何一直推迟?技术分析缪尔冰川升级如何影响以太坊生态图 1 以太坊区块生成时间差与难度调整关系图

由上述可得知,区块时间整体性的增加与第一部分公式并无关系。根据该公式,每个区块均会依照上个区块出块时间做难度调整,在每个区块生成时会有难度的上下波动,但不会随着时间而增加难度。

第二部分就是难度炸弹,以 2 的指数次方呈现,n 为区块数,意味着每 10 万个区块难度值便大上一倍。

由以上两个部分公式可得出两个结论: 1. 第一部分可持续调节难度直到第二部分难度值过大。 2. 全网哈希值对难度炸弹爆发时间并无关系,因为第一部分公式已调节出块时间排除算力因素。因此,矿工的出走或增加并不会对以太坊长期的难度值有所变化,会造成变化的是难度炸弹爆发的开始。由此可知,矿工行为在难度炸弹爆发前并不受难度值递增影响,无论是拆除难度炸弹或无限期推迟爆发时间,对矿工来说,无论是挖矿奖励或是出块速度,并无太大差异。

二、缪尔冰川升级

由于以太坊 2.0 的转型不断延迟,从 2017 年至今难度炸弹已经爆发了三次,并经由硬分叉延迟爆发时间。以太坊开发者延迟难度炸弹的方式是利用伪区块号(Fake Block Number)来代替原本的区块号使难度炸弹重置。以下公式为缪尔冰川利用伪区块号重制区块炸弹方法。

难度炸弹为何一直推迟?技术分析缪尔冰川升级如何影响以太坊生态

由上公式可知本次缪尔冰川升级在区块高度 9,200,000 重置了 900 万个区块来到 200,000 区块高度。任何大于区块高度 9,200,000 的区块,都将由伪区块号代替计算难度值。

过去的两次分叉: 拜占庭分叉重置了 3000000 个区块,君士坦丁堡分叉重置了 5000000 个区块,这两次分叉因为难度炸弹回推时间不够,以及开发者试图观察以太坊 2.0 升级状况做决定,因而造成了两个缺失: 1. 难度炸弹时间无法预测,造成矿工及用户措手不及遭受损失。2. 推迟区块数不够,造成之后不断需要进行硬分叉以避免难度炸弹爆发。而本次缪尔冰川硬分叉将伪区块号推至最初区块高度 ,此举也让矿工及开发者较容易预测下次难度炸弹爆发时间,且本次回推约 611 天与预期未来以太坊 2.0 上线时间一致。

难度炸弹为何一直推迟?技术分析缪尔冰川升级如何影响以太坊生态

三、缪尔冰川升级带来的影响

(一)算力回归均衡

伪区块号调整至 200,000 大幅降低了挖矿难度,区块生成时间下滑至原本均衡的范围内,区块生成时间下降使日均区块生成数目上升。挖矿难度下降意味着更多矿工会进入挖矿,因为本次并无调降区块奖励,矿工的盈余相较硬分叉前也预期增加约 20-25%。如果币价保持不变则整体算力将会短暂上升回归均衡,而全网安全也回到合理的水平。而本次难度炸弹推迟,以太坊币价将会同时受到安全水平上升以及 ETH 供给增加双向影响,预计币价将不受本次升级影响。

(二)难度炸弹本质改变

由于最初设置难度炸弹的原因是为了以太坊顺利从 1.0 过渡至 2.0,迫使矿工放弃旧链而迁移到新链,但如今以太坊 2.0 迁移方式尚未确定,可能仅使用 PoS 模型取而代之而非以混合 PoW/PoS 方式,也就是说以太坊 2.0 可能并非对 1.0 的直接升级,而是经过过渡后映像一个全新的主链。因此,难度炸弹已不构成矿工迁移至新链的诱因,因为即使冰川时代来临,拒绝迁移至新链并坚持工作量证明机制的矿工还是有机会可以在难度增加前,硬分叉一条无难度炸弹存在的新链。除此之外,由于每次硬分叉都会对整个社区造成技术上的风险以及时间及人力损失,彻底解除难度炸弹成了未来选项之一。

但难度炸弹的功能除了作为矿工迁移至新链的诱因外,还有迫使矿工及节点更新其软件及设备,以维持整个网络的速度及效率,且解除难度炸弹将会为以太坊 2.0 转型带来一定的风险,因此目前推迟难度炸弹而非彻底解除是最好的解决办法。

四、结论

缪尔冰川升级暂时化解了冰川时代提前来临的可能,但对基金会而言未来更重要的是如何同时兼顾矿工的利益以及以太坊的发展。决定矿工利益的因素并非难度炸弹爆发与否,而是以太坊未来的发展方向,难度炸弹只是辅助以太坊转型机制的一个手段,解除或是延迟难度炸弹主要取决于以太坊 2.0 的项目进度。预计在随着以太坊 2.0 转型逐渐成熟,社区未来对难度炸弹的处理也将有更多元且符合各方利益的方式。

本文经邹传伟博士校审。