吳說作者 | 吳卓鋮

本期編輯 | Colin Wu

8 月 20 日,以太坊核心開發者 Tim Beiko 在開發團隊電話會議的內容回顧上表示,可能推遲 12 月的難度炸彈,但在合併前不會有新的 EIP。 細數下來,這有可能是難度炸彈第五次被推遲。 為何難度炸彈一再推遲? 它存在的意義又是什麼? 它和 ETH 2.0 的合併又有什麼關聯?

難度炸彈的意義

難度炸彈是以太坊挖礦中致使挖礦難度迅速上升的開關。 以太坊的挖礦難度除了與上一個區塊的出塊時間有關,還與該區塊的難度因數有關。 下面列出了難度的計算公式,前半部分是常規的難度調整,將每一區塊的出塊時間穩定在 13 秒;後半部分(即紅框部分)即難度因數,決定了難度炸彈的開啟時間和爆炸的速度。

br

具體地,難度因數中包含了難度炸彈開啟的目標區塊高度,當區塊高度沒有達到目標值時,挖礦難度只受上一區塊的出塊時間影響;而一旦區塊高度到達預定值,出塊時間便會呈指數是上漲,隨後每挖出 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 終結的先行指標便是基於這個邏輯。

難度炸彈開啟後,以太坊合併必須在兩三個月內完成,如果完成不了,團隊只能選擇暫停並推遲,這在歷史上發生過三次。

歷次推遲難度炸彈的 EIPs

歷史上難度炸彈曾幾次被提起過,又四度被推遲了,四次推遲分別發生在拜占庭升級、君士坦丁堡升級、繆爾冰川升級和剛結束的倫敦升級。

br

上圖為歷史上以太坊出塊時間的變化,可以看到正常情況下出塊時間維持在 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 而沒有其他新的提案,因此考慮更改「上海」為其他「冰川主題」)。


(以上內容獲合作夥伴 火星財經 授權節錄及轉載,原文鏈接  | 出處:吳說區塊鏈)

聲明:文章僅代表作者個人觀點意見,不代表區塊客觀點和立場,所有內容及觀點僅供參考,不構成投資建議。投資者應自行決策與交易,對投資者交易形成的直接間接損失作者及區塊客將不承擔任何責任。


熱門市場動態與新聞傳送門:

區塊客致力於發掘和整理各種與區塊鏈技術有關的內容,只要與區塊鏈或區塊客網站有關的合作和/或建議,我們都非常歡迎。請您發電郵至 [email protected] 與我們聯繫。

Avatar

區塊客