正在學習區塊鏈,如果我哪裏有錯誤希望大家指出,如果有任何想法也歡迎留言。這些筆記本身是在typora上寫的,如果有顯示不正確的敬請諒解。筆記本身也是給我自己寫的,所以如果有侵權的請通知我,我立即刪除。
7.挖礦難度調整
7.1 挖礦難度公式
是區塊序號,具體什麼意思我也不清楚,難道創世區塊的,其它的都是otherwise?
D(H)是本區塊的難度,下面那個分爲兩部分,前者是max的成爲基礎部分,爲了維持出塊時間在15s左右,ε是難度炸彈,爲了兼容後續的權益證明。是父區塊的挖礦難度。
7.2 挖礦難度調整公式
x是父區塊挖礦難度的2048分之一,是難度調整的單位。
y是父區塊的叔父區塊個數加一。如果父區塊沒有叔父區塊,那y就等於1。爲啥出塊時間要跟父區塊的叔父區塊個數有關呢?因爲出塊時間的修改一個原因是保證交易速度,還有一個就是有限時間內發行的以太幣數量。前者可以通過閃電網絡解決,後者在以太坊中就是通過調整出塊時間實現的。
x一定是正數,如果max中y的減數大於y,說明是負數,出塊難度要下調,反之初會難度要上調。
是本區塊的時間戳,是父區塊的時間戳(我也不知道爲啥長得和父區塊的挖礦難度很像),以秒爲單位。差就是出塊間隔。
-99的目的是防止出現黑天鵝事件,減少最小的不能少於-99。
假設沒有叔父區塊,即y=1。如果出塊間隔在[1,8],除以9後等於0,即挖礦難度要加一;如果出塊間隔在[9,17], 等於0,挖礦難度不需要改變;如果間隔在[18,26],挖礦難度要增加一。
7.3 難度炸彈
在以太坊挖礦算法出現的時候就打算把工作量證明變成權益證明,可是當時還沒研發出來,還怕到時候礦工們不幹就打算加上這個ε。因爲如果礦工們發現自己的挖礦設備白瞎了,他們就有可能聯合起來攻擊以太坊,那樣就會出現硬分叉,這不是以太坊所希望看到的,所以加上了這個指數上升的參數,到了若干代參數後,礦工們就是不想同意也沒辦法,因爲後續這個值超級高,挖礦已經變成了幾乎不可能。可是事實是以太坊的兄弟們目前還沒研發出來,可是挖礦的指數難度已經開始了,所以以太坊就把區塊數量減去300萬計算ε,可以臨時性解決這個問題。
下圖就能看出在45的時候減了那300萬,挖礦難度瞬間下來了。