詳解以太坊難度炸彈第五次推遲意味著POW終結可能再次延後

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

難度炸彈的意義

難度炸彈是以太坊挖礦中致使挖礦難度迅速上升的開關。以太坊的挖礦難度除了與上一個區塊的出塊時間有關,還與該區塊的難度因子有關。下面列出了難度的計算公式,前半部分是常規的難度調整,將每一區塊的出塊時間穩定在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 終結的先行指標便是基於這個邏輯。

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

歷次推遲難度炸彈的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 而沒有其他新的提案,因此考慮更改“上海”為其他“冰川主題”)。

Total
0
Shares
Related Posts