详解以太坊难度炸弹 第五次推迟 意味着POW终结可能再次延后

详解以太坊难度炸弹 第五次推迟 意味着POW终结可能再次延后

吴说作者 | 吴卓铖

本期编辑 | Colin Wu

8月20日,以太坊核心开发者 Tim Beiko 在开发团队电话会议的内容回顾上表示,可能推迟12月的难度炸弹,但在合并前不会有新的 EIP。细数下来,这有可能是难度炸弹第五次被推迟。为何难度炸弹一再推迟?它存在的意义又是什么?它和 ETH2.0 的合并又有什么关联?

 1   难度炸弹的意义

难度炸弹是以太坊挖矿中致使挖矿难度迅速上升的开关。以太坊的挖矿难度除了与上一个区块的出块时间有关,还与该区块的难度因子有关。下面列出了难度的计算公式,前半部分是常规的难度调整,将每一区块的出块时间稳定在13秒;后半部分(即红框部分)即难度因子,决定了难度炸弹的开启时间和爆炸的速度。

       

具体地,难度因子中包含了难度炸弹开启的目标区块高度,当区块高度没有达到目标值时,挖矿难度只受上一区块的出块时间影响;而一旦区块高度到达预定值,出块时间便会呈指数是上涨,随后每挖出10万个区块难度便会调整一次。

2015年8月4日,前以太坊首席商务官 Stephan Tual 首次提及了难度炸弹。

“很多人一直想知道我们如何在宁静阶段实现从 PoW 到 PoS 的切换。这将通过新引入的难度调整计划来处理,该计划在未来16个月内将平稳地保证硬分叉点……它的工作原理如下:从20万的区块高度(时间约为2015年8月下旬)开始,挖矿难度将开始经历指数型增长,大约一年后,难度会明显增加。到那个时候(大概就是宁静里程碑发布时),挖矿难度的大幅增加将使出块时间变长。”

为何 PoW 转换成 PoS 需要难度炸弹来过渡?明白了这个问题就能理清难度炸弹和 ETH2.0 的先后顺序。首先我们需要接受一个事实,ETH2.0 完成后 PoW 将退出历史舞台,不存在两种共识共存的情况,这在吴说过往的文章中也分析过,且 ETH2.0 合并阶段的完成就是 PoW 挖矿方式的终结。

对此,庞大的矿工社区存在一种声音,企图在以太坊完成 1.0 与 2.0 合并后实行分叉。这对于整个以太坊社区无疑将是个双输的局面,因此开发团队需要想办法防止此类事件发生。我们知道,由于 Vitalik 的存在,以太坊开发团队是比较容易统一战线的;而矿工团队则不然,去中心化导致全体矿工无法形成一个利益共同体。换言之,只要能让矿工之间互相不信任,那么矿工将不具备足够的算力来实现51%攻击。

难度炸弹便是一个能让矿工产生不信任的阳谋。根据 Stephan Tual 的预估,难度炸弹开启后以太坊需要大约一年的时间(实际时间或许比这更短,后文会细数历次难度炸弹开启后实行的时间)才能上升到一个几乎无法挖出区块的难度。这意味着,从开启到矿工入不敷出,当中至少有几个月的时间,而这段时间正是瓦解矿工阵营的时候。

考虑到区块高度越高,实现分叉的难度就越大,矿工不能等到完全没有产出了才开始分叉,而是应该在难度炸弹开启的第一时间就开始行动。然而试想一下,作为一个理性的矿工个体,你会在难度炸弹开启的时候尝试分叉主链吗?事实上你会担心:如果有个别矿工没有齐心协力地分叉,而是在原最长链上继续挖,那么他们的产出将会大幅上升,甚至超过难度炸弹造成的损失,一旦分叉失败,这些“背叛”的矿工会赚的盆满钵满,而“团结”的矿工却竹篮打水。因此,理性的矿工会选择沿着主链继续挖(或者选择以合理的退出价格离场),即使知道最终的结果是产出为零,也没人愿意带头冒险。

理解了难度炸弹的意义我们自然就能明白其开启时间与 ETH2.0 合并时间的先后顺序。如前文所述,难度炸弹的存在就是为了在以太坊 1.0 与 2.0 合并时不要发生矿工集体分叉的局面,因此如果以太坊已经顺利完成了合并,那么难度炸弹也就没有存在的意义了。之所以把难度炸弹的最终开启时间视为 PoW 终结的先行指标便是基于这个逻辑。

难度炸弹开启后,以太坊合并必须在两三个月内完成,如果完成不了,团队只能选择暂停并推迟,这在历史上发生过三次。

 2   历次推迟难度炸弹的EIPs

历史上难度炸弹曾三度开启过,又四度被推迟了,四次推迟分别发生在拜占庭升级、君士坦丁堡升级、缪尔冰川升级和刚结束的伦敦升级。

       

上图为历史上以太坊出块时间的变化,可以看到正常情况下出块时间维持在13-14秒,但出现过三次急剧上升的情况,这三次正是难度炸弹开启的时候。每次开启后,出块时间都会呈现锯齿状上升,这便是因为每挖出10万个区块难度会调整一次。以最初的13秒为例,10万个区块大约耗时15天,而最后一次时间增加到25秒,此时10万个区块需耗时将近一个月,因此锯齿呈现逐渐变宽的趋势。三次难度炸弹最终都被暂停并推迟,原因就是以太坊开发团队还没做好完全转向 PoS 的准备,而 PoW 模式下区块难度的上升会导致交易等待时间和叔块概率的增加,从而降低以太坊的实用性与安全性。

第一次推迟难度炸弹

2017年3月,区块高度达到370万,难度炸弹第一次开启,出块时间迅速上升,期间经过6次难度调整,直至10月被延长至30秒。此时,若不尽快停止难度炸弹,将严重影响以太坊生态。经过开发团队讨论后,以太坊在区块高度437万处启动硬分叉——拜占庭升级,在升级版本中包含了 EIP-649 提案,该提案通过把当前的区块高度减去300万作为公式中使用的伪区块高度,以此来延缓难度炸弹的启动时间。

此时的真实区块高度是437万,但用来启动难度炸弹的伪区块高度是137万(437-300)。简单计算可以得出,当伪区块高度再次达到370万,也就是233万(370-137)个区块后——即真实区块高度达到670万(437+233),难度炸弹会再次开启。

第二次推迟难度炸弹

2019年1月15日,以太坊君士坦丁堡升级协调员 Afri Schodeon 发现以太坊的难度炸弹已经在670万高度的区块如期启动,并在大约 700 万高度的区块发生了“爆炸”。第二日,以太坊核心开发成员 Eric Conner(即推出 EIP-1559 的开发者)在推特上指出,难度炸弹爆炸后,平均出块时间已经从14秒升至15.5秒,并且会加速提升。

2月中,以太坊出块时间上升至20秒,问题又一次摆在以太坊开发者面前,唯一的办法还是分叉升级处理掉难度炸弹的影响。2月28日,君士坦丁堡升级在区块高度为728万处完成分叉,难度炸弹危机被再一次被暂时解除。君士坦丁堡升级中包含的 EIP-1234 不仅仅将难度炸弹推迟,还有一项重要的改变就是将出块奖励减少为2个 ETH。此次推迟爆炸的方法和拜占庭升级一样,即简单地将难度因子中的伪区块高度减少500万。调整后,真实高度为728万,伪高度为228万(728-500),当伪高度回到370万,即真实高度达到870万(370-228+728),难度炸弹将再次开启。这次只需再经过142万个区块,因此时间较前一次更短。

第三次推迟难度炸弹

2019年10月5日,难度炸弹在区块高度860万处提前启动,12月中,出块时间上升至17秒。以太坊开发者不得不在进行伊斯坦布尔升级后不久,于920万高度处再次进行硬分叉。这就缪尔冰川升级,此次升级只有一项改进提案(之所以以冰川命名就是因为升级只针对难度炸弹,炸弹完全爆发后,出块奖励将被“冻结”,近期考虑的第五次推迟也可能用这种方式命名),即 EIP-2384,旨在将难度炸弹再推迟400万个区块,即1320万高度,大约是向后推迟了611天。

而提案中还有一句话引人关注:最好将难度炸弹再次推迟到 ETH2.0 最终版工具(finality gadget)预计发布的时间。

第四次推迟难度炸弹

这一次,以太坊开发团队没有等到难度炸弹爆炸。2021年8月5日,以太坊在高度为1296.5万处启动伦敦升级,难度炸弹被再次推迟。本次升级包含 EIP-3554,将难度因子中的伪区块高度在约1247万(此高度并非当前实际高度,而是协议提出时设立的一个预计高度)基础上减少970万,即277万。因此大约经历93万(370-277)个区块后会再次启动难度炸弹,以出块时间13秒计算,大约需要4.7个月(官方预估在12月的第一周启动)。

第五次提出 EIP 推迟难度炸弹?

7月份,以太坊核心开发者 Tim Beiko 曾表示:假设我们有一个非合并升级(作者注:假设12月的上海升级无法完成 2.0 的合并,事实上这个假设大概率会发生),我们需要决定是否要包括除了另一个难度炸弹延迟之外的任何其他内容(作者注:如果包含其他升级协议,那么保留“上海”这个名称,否则考虑使用“冰川主题”命名,理由与缪尔冰川升级相同)。

8月20日,Tim Beiko 在以太坊核心开发者电话会议的内容回顾上表示,基本上所有团队都同意,除了 Eth1 和 Eth2 合并的共识更改之外,还有其他重要的事情需要在接下来几个月内完成,其中大部分是客户端需要为合并进行性能优化、更好地分离共识引擎等。鉴于此,与会人员同意不在12月进行功能分叉(feature fork),这意味着可能会推迟难度炸弹,添加其他少量(one line)更改,但不会在合并之前产生新的 EIP。

现在看来,难度炸弹被再次推迟几乎是板上钉钉,这也和我们之前分析过的它与以太坊合并之间的关联相吻合。简而言之,合并意味着 PoW 终结,而难度炸弹彻底爆炸则意味着合并的完成。在以前的文章中我们分析过,PoW 的终结最快也要到2022年的二季度,而难度炸弹从启动到彻底爆炸仅需要两三个月,因此如果12月便启动难度炸弹,以太坊必须要在明年一季度完成合并,这是个难以完成的任务。

最后一个问题是,以太坊开发团队是否会提出一个新的 EIP 来推迟难度炸弹?过去四次,开发者都是通过降低难度因子中的伪区块高度来实现,而修改代码则必须提出 EIP。如何在不提出 EIP 的情况下实现难度炸弹的推迟,这需要开发团队进一步的解释(作者猜测 Tim Beiko 的意思是,12月升级只包含推迟难度炸弹的 EIP 而没有其他新的提案,因此考虑更改“上海”为其他“冰川主题”)。

头图来自U.today

声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。

点击阅读全文