什么是難度目標?
難度目標是
比特幣系統中調控挖出區塊所用平均時間的參數,是區塊頭中6個字段之一。
比特幣挖礦難度(Difficulty),是對挖礦困難程度的度量,挖礦難度越大,挖出區塊就越困難。目標值(Target)與挖礦難度成反比。難度越高,目標值越小。而難度目標是目標值通過轉化得到,是一個只有4個字節的字段(為了便于理解,本文將難度目標等同目標值處理)。比特幣系統正是通過調整區塊頭中難度目標來控制挖出區塊所需平均時間的。
目標值是個長度為256比特的字符串,換句話說目標值約有2^256種可能的取值。調整難度目標就是調整目標值在整個輸出空間的占比。
舉例說明:挖礦就如射擊,所有射出去的子彈都會落在一個很大的靶子上。難度目標就是這個大靶子上圈出一個范圍,這個范圍越小,被射中的難度就越高。調節難度目標,就是調節這個圈在整個靶子上的占比。
挖礦算力增大,單位時間射擊的次數就越多,目標范圍被射中所需的時間就越短。反之,挖礦算力減小,目標范圍被擊中所需的時間就越長。而比特幣系統追求的平均出塊時間為10分鐘,這時候就需要調整難度目標來實現。
如何調整難度目標?
比特幣系統是怎樣調整難度目標的呢?在《白話
區塊鏈入門080 |數說比特幣,了解比特幣必須知道這10個數字》一文中,我們介紹了比特幣系統每過2016區塊(大約為14天時間),會自動調整一次難度目標。所有區塊高度為2016整數倍的區塊,系統就會自動調整難度目標。如果上一個難度目標調整周期(也就是之前2016個區塊),平均出塊時間大于10分鐘,說明挖礦難度偏高,需要降低挖礦難度,增大難度目標(準確地說是目標值);反之,前一個難度目標調整周期,平均出塊時間小于10分鐘,說明挖礦難度偏低,需要縮小難度目標.
難度目標的可調范圍
比特幣系統設定,難度目標上調和下調的范圍都有4倍的限制。舉例說明:假設上一個難度目標調整周期內的2016個區塊,由于算力暴漲,只用7天就全部挖出來了,通過難度目標調整,將難度目標縮小一倍,可以將平均出塊時間維持在10分鐘左右,但如果算力暴漲,前2016個區塊全部挖出只用了1天,那么難度目標最小只能調整為原來的四分之一。
比特幣的算力是持續波動的,比特幣系統通過難度目標的調整,使得平均出塊時間維持在10分鐘左右。難度目標和挖礦難度成反比,挖礦難度越大,難度目標越小。當區塊高度為2016的整數倍時,比特幣系統就會在該區塊上,自動調整難度目標。如果上一個難度目標調整周期內,平均出塊時間超過10分鐘,那么降低挖礦難度,增大難度目標;反之則提高挖礦難度,減小難度目標。難度目標上調和下調的范圍都有4倍的限制。
比特幣每2016個區塊(大約14天)調整一次挖礦難度,相比于BCH每個區塊都調整(大約10分鐘調整一次),有明顯的滯后性。你認為是哪種調整方式更合理呢?為什么呢?歡迎在留言區分享你的觀點。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。