以太坊之七挖礦難度調整

正在學習區塊鏈,如果我哪裏有錯誤希望大家指出,如果有任何想法也歡迎留言。這些筆記本身是在typora上寫的,如果有顯示不正確的敬請諒解。筆記本身也是給我自己寫的,所以如果有侵權的請通知我,我立即刪除。

7.挖礦難度調整

7.1 挖礦難度公式

D(H){D0D0131072if Hi=0max(D0,P(H)Hd+xζ2)+εotherwise D(H) \equiv \begin{cases} D_0(D_0\equiv131072) &if\text{ }H_i = 0\\ max(D_0,P(H)_{H_d} + x*\zeta_2) + \varepsilon &\text{otherwise} \end{cases}

HiH_i是區塊序號,具體什麼意思我也不清楚,難道創世區塊的Hi=0H_i=0,其它的都是otherwise?

D(H)是本區塊的難度,下面那個分爲兩部分,前者是max的成爲基礎部分,爲了維持出塊時間在15s左右,ε是難度炸彈,爲了兼容後續的權益證明。P(H)HdP(H)_{H_d}是父區塊的挖礦難度。

7.2 挖礦難度調整公式

xP(H)Hd2048ζ2max(yHSP(H)Hs9,99) x\equiv {\lfloor {\frac {P(H)_{H_d}}{2048}}\rfloor} \\ \zeta_2 \equiv max(y-{\lfloor \frac{{H_S}-{P(H)_{H_s}}}9 \rfloor},-99)

x是父區塊挖礦難度的2048分之一,是難度調整的單位。

y是父區塊的叔父區塊個數加一。如果父區塊沒有叔父區塊,那y就等於1。爲啥出塊時間要跟父區塊的叔父區塊個數有關呢?因爲出塊時間的修改一個原因是保證交易速度,還有一個就是有限時間內發行的以太幣數量。前者可以通過閃電網絡解決,後者在以太坊中就是通過調整出塊時間實現的。

x一定是正數,如果max中y的減數大於y,說明ζ2ζ_2是負數,出塊難度要下調,反之初會難度要上調。

HsH_s是本區塊的時間戳,P(H)HsP(H)_{H_s}是父區塊的時間戳(我也不知道爲啥長得和父區塊的挖礦難度很像),以秒爲單位。差就是出塊間隔。

-99的目的是防止出現黑天鵝事件,減少最小的不能少於-99。

假設沒有叔父區塊,即y=1。如果出塊間隔在[1,8],除以9後等於0,即挖礦難度要加一;如果出塊間隔在[9,17], ζ2ζ_2等於0,挖礦難度不需要改變;如果間隔在[18,26],挖礦難度要增加一。

7.3 難度炸彈

ε2Hi÷1000002Himax(Hi3000000,0) \varepsilon \equiv {\lfloor 2^{{\lfloor H^{\text{'}}_i÷100000 \rfloor}-2} \rfloor}\\ H^{\text{'}}_i \equiv max(H_i-3000000,0)

在以太坊挖礦算法出現的時候就打算把工作量證明變成權益證明,可是當時還沒研發出來,還怕到時候礦工們不幹就打算加上這個ε。因爲如果礦工們發現自己的挖礦設備白瞎了,他們就有可能聯合起來攻擊以太坊,那樣就會出現硬分叉,這不是以太坊所希望看到的,所以加上了這個指數上升的參數,到了若干代參數後,礦工們就是不想同意也沒辦法,因爲後續這個值超級高,挖礦已經變成了幾乎不可能。可是事實是以太坊的兄弟們目前還沒研發出來,可是挖礦的指數難度已經開始了,所以以太坊就把區塊數量減去300萬計算ε,可以臨時性解決這個問題。

下圖就能看出在45的時候減了那300萬,挖礦難度瞬間下來了。

avatar

發佈了39 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章