ETH难度炸弹为何一再被推迟?

[复制链接]
19072 |0
发表于 2021-8-26 21:00:00 | 显示全部楼层 |阅读模式

如果 12 月启动难度炸弹,ETH必须要在明年一季度完成合并,这是个难以完成的任务。

原文标题:《详解ETH难度炸弹 第五次推迟 意味着 POW 终结可能再次延后》
吴说作者:吴卓铖
吴说编辑:Colin Wu

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

难度炸弹的意义

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

wk588_ny0p2t4i4hi.jpg

wk588_ny0p2t4i4hi.jpg

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

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

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

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

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

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

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

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

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

历次推迟难度炸弹的 EIPs

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

wk588_vnnmv4zs1xq.jpg

wk588_vnnmv4zs1xq.jpg

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

第一次推迟难度炸弹

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

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

第二次推迟难度炸弹

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

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

第三次推迟难度炸弹

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

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

第四次推迟难度炸弹

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

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

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

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

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

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表