以太坊難度炸彈機制是否該被取消?技術分析繆爾冰川硬分叉升級對以太坊生態的影響。

原文標題:《繆爾冰川升級分析》
撰文:錢柏均,就職於 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 轉型逐漸成熟,社區未來對難度炸彈的處理也將有更多元且符合各方利益的方式。

本文經鄒傳偉博士校審。