預測EIP 4345 的影響:關於難度炸彈推遲,我們該如何決策?
以太坊爱好者
2021-10-25 10:58
本文约3642字,阅读全文需要约15分钟
本文是為預測EIP 4345 的影響而作的練習。

作者: Thomas Jay Rush

本文是為預測EIP 4345 的影響而作的練習。這個EIP 提議在2021 年12 月推遲難度炸彈。我們的目標是看看我們是否能幫助確定應該何時推遲、應該推遲多少,好讓難度炸彈預計在2022 年5 月份再次爆炸。

預備知識

有關這個主題,我之前已經寫過很多篇文章了:

  • 有關難度計算的方法:It's Not the Difficult(中文譯本)

  • 有關如何推遲難度炸彈:A Method to Diffuse the Difficulty Bomb

  • 一些更老的文章見此處和此處

難度炸彈的計算兩部分組成:A 部分,用於調整難度、平抑出塊時間的波動;B 部分,即難度炸彈本體(詳細解釋見上述第一篇文章)。

A 部分的調整時逐塊發生的,保證出塊時間圍繞13.5 秒波動。這部分的調整效果非常好,如果沒有難度炸彈的話,將使出塊時間幾乎保持恆定。我們感興趣的是B 部分。

注意

注意

注意

我只有自己一個人。我帶著日漸疲憊的心、使用公開可得的數據寫下這篇文章。我在這裡所說的一切都是可以討論的,但我已不准備為此負任何責任。本文中的一切,請自己帶著懷疑和謹慎加以看待和使用。

實際數據vs. 理論數據

我是一個工程師,不是一個數學家,所以我對實際數據的興趣,要比對數學預測的大。在下文中,我會預測數據將如何改變。我的預測基於上面的公式,但都只用到了簡單、直接的Excel 表格。

我的討論基於三個簡單的觀察:

  • A 部分工作得非常好,使得出塊時間穩定在平均13.3 的水平。

  • B 部分也工作得非常好,它是獨立於A 部分的,並且只會提高區塊時間。

  • 如果我們忽略炸彈部分,我們的預測會是保守的。

換句話來說,如果我們的預測忽略了炸彈的效果,我們預測的時間將會比實際時間“提早” 一些。這樣的話,即使我們預測錯了,也會有額外的緩衝時間。

第一個表格使用當前的區塊號(在撰文之時是1339 1127),並按每塊13.3 秒的時間推算出1400 0000 區塊高度的時間:

看仔細一些,我們發現,自區塊號1200 0000 以來,平均出塊時間一直在提高(儘管8 月和9 月有所下降)。當然,隨著炸彈的爆炸,平均出塊時間會增加得越來越快。

再次強調,為了保守一些,我們選擇13.3 秒的出塊時間來預測未來區塊挖出的具體時間,並且,我們暫時忽略難度炸彈的效果。當難度炸彈爆炸時,平均出塊時間增加;所以,忽略難度炸彈的結果是我們預測的時間將早於實際挖出的時間。 (按我們這個例子來看,就是區塊1400 0000 將“不早於” 2022 年1 月10 日挖出。)

何時分叉

我們考慮的第一個問題是,“何時應該分叉?”

在我看來,答案完全取決於fake_period 的數值。可以這麼問:“我們應該在哪個區塊號分叉?1370 0050,1380 0050 還是13900 0050?”(加上一個50,確保沒有差一錯誤(off-by-one error) —— 為什麼這很重要,則留給讀者當作練習—— 公式的計算應該使用大於號呢,還是使用大於等於號呢?)

下面的表格展示了fake_block 計算。

在這裡我們並置了對每個區塊將挖出的具體時間的預測,以及偽區塊號的計算(用真區塊號減去偏移量,獲得偽區塊號,並推導出偽週期號)。

偽週期號正是我們感興趣的內容,因為難度炸彈的值完全取決於偽週期號的值。從我之前的工作來看,我們認為難度炸彈的效果會在偽週期號達到41~42 之間的時候開始顯現,在此之前則不明顯。換言之,當偽週期號變成41 時,B 部分的效果將壓過A 部分的效果。

我在這裡不想解釋為什麼難度炸彈的效果不會在偽週期號達到41 之前顯現。我想說的只是,炸彈只會提高出塊的時間,而如果沒有炸彈的話,A 部分就會讓區塊時間保持在13.3 秒左右。換句話來說,平均出塊之間會高於13.3 秒,如果太低了(出塊速度太快了),A 部分就會調整難度,把出塊時間拉回來—— 再直白一點— — A 部分就是這麼工作的。

給定上述分析,我建議在晚於1380 0000 區塊的任意時間分叉。大概是12 月中旬。我會建議以具體的區塊號(而不是日期)為目標,比如區塊號1385 0000。 “痛點”(也就是出塊時間明顯減慢的時候)會在大約1 月中旬到來。所以這個目標也是有容錯空間的。

我們應該推遲多少偽塊?

我們需要考慮的另一個問題是,“我們需要偏移多少偽區塊?”

如上所述,偏移量決定了偽區塊號,進而決定了偽週期號,進而決定了炸彈的值。所以,在下文中,我們會專注於偏移量,看看我們能學到什麼。

EIP 4354 所提議的數值

首先,我們來看看這個EIP 提議的偏移量。我們在此根據13.3 秒的平均出塊時間生成一個簡單的圖表。同樣地,我們忽略炸彈的影響,因為我們知道炸彈只會提高區塊時間,因此讓相應區塊號的實際發生時間晚於我們的預測。我們將安排“Arrow Glacier”(下一次分叉的代號)發生在1380 0050 號區塊,並使用這個EIP 提議的偏移量1050 0000。

本圖似乎表明,如果我們(按照這個EIP 的建議)設置1050 0000 的偏移量,則難度炸彈最早將在4 月中旬(也即偽週期號再次到達41 的時候)開始爆炸。到5 月中旬,區塊將開始顯著變慢(偽週期號到達43)。

我們之前遇過的最大的偽週期號就是43, 是在“拜占庭” 分叉之前。出塊時間的增加顯著可見—— 達到了數秒的級別。

提早或推遲分叉的時間

為了消遣,我準備看看如果我們提早或推遲分叉的時間,會有什麼影響。

下面的這張表顯示了估計的結果—— 讓我有點意外—— 分叉的時間對最終結果沒有影響。但是,我回想了一些,覺得這是有道理的。因為,唯一一個決定偽週期號的量就是偏移量。除了讓當次分叉之前出塊變得更慢,推遲分叉的時間對下一次難度炸彈爆炸的時間(即四五月間)沒有任何影響。

你可以從上面這張圖看出,無論我們早點還是晚點實施“Arrow Glacier” 硬分叉,只要我們使用1050 0000 的偏移量,那就對下一次難度炸彈爆炸的時機沒有任何影響。

那我們該偏移多少呢?

這個問題取決於你想在5 月的時候給以太坊核心開發者多大的壓力。如果你想給他們很大的壓力—— 讓5 月的時候整個世界都會抱怨以太坊出塊速度變慢—— 那就把偏移量設得小一點。如果你只想輕輕地推他們一下—— 類似於“我們最好現在採取行動,不過也不是特別著急” —— 那就支持大一點的偏移量。

如果你使用了1050 0000 的偏移量,你可能是在給他們很大的壓力。你可以預期,四月底就會看到出塊顯著變慢(慢上一秒的那種)。但是,難度炸彈的麻煩之處在於,一旦開始爆炸,就不會給人喘息之機。

從“明顯(變慢)” 到“非常顯著”,到“令人煩躁”,再到“搞什麼鬼” 再到“以太坊去死吧”,只需要4 到6 週時間。我不是瞎扯,因為每一個10 萬區塊的周期都會越來越長(因為每過一個週期,炸彈數值就會翻倍,出塊時間會增加得非常快),而且只要開始爆炸,就會爆炸得越來越快。詳見我上面關於“拜占庭” 分叉前爆炸情況的文章。難度炸彈是來得很慢,但爆炸之後可就是另一番景象了。

總結

總結

總結

  • 決定你想給核心開發者多大的壓力。如果你想狠狠推他們一把,就把偏移量設為1050 0000;如果你想放過自己,就請設置為1070 0000。搖擺不定的,可以在這兩者間取一個值。

  • “何時” 激活分叉的決定對下次爆炸的時間沒有影響(也即,都左右不了炸彈會在5 月份爆炸)。這個決定唯一影響的是“Arrow Glacier” 硬分叉之前出塊時間會拉長到多久。這是因為,只有偏移量會影響偽週期號,也只有偽週期號會影響難度炸彈的數值。

支持我們的工作

TrueBlocks 是完全用我們的個人資金支持的項目,少量獎金來自以太坊基金(2018)、Consensys 公司(2019)、Moloch DAO(2021)以及近期的Filecoin/IPFS(2021)。

如果你喜歡本文,或者希望支持我們的工作,請看我們的GitCoin 主頁:https://gitcoin.co/grants/184/trueblocks。請給下一輪匹配捐款。我們會從更大的匹配獎勵中獲得額外的利益。即使很小的數額也會產生很大的效果。

或者,你可能更願意直接給我們捐助。

原文鏈接:

https://medium.com/coinmonks/adventures-in-difficulty-bombing-837890476630


以太坊爱好者
作者文库