時間:2021-11-18|瀏覽:853
難度目標(biāo)是調(diào)節(jié)比特幣系統(tǒng)中挖掘塊所用平均時間的參數(shù),是塊頭的六個字段之一。
比特幣挖掘難度(Difficulty),是挖掘難度的度量,挖掘難度越大,挖出區(qū)塊就越困難。目標(biāo)值(Target)與挖掘難度成反比。難度越高,目標(biāo)值越小。難度目標(biāo)是通過轉(zhuǎn)換獲得目標(biāo)值,這是一個只有4個字節(jié)的字段(為了便于理解,本文將難度目標(biāo)等同于目標(biāo)值)。比特幣系統(tǒng)通過調(diào)整塊頭的難度目標(biāo)來控制塊挖掘所需的平均時間。
目標(biāo)值是一個長度為256比特的字符串。換句話說,目標(biāo)值2^256個可能的值。調(diào)整難度目標(biāo)是調(diào)整目標(biāo)值在整個輸出空間中的比例。
比如挖掘就像射擊,射出的子彈都會落在一個大目標(biāo)上。難度目標(biāo)是在這個大目標(biāo)上圈出一個范圍。范圍越小,被射中的難度越大。調(diào)整難度目標(biāo)就是調(diào)整這個圈在整個目標(biāo)中的比例。
隨著挖掘計算能力的增加,單位時間的射擊次數(shù)越多,目標(biāo)范圍被射中所需的時間越短。相反,隨著挖掘計算能力的降低,目標(biāo)范圍被擊中所需的時間越長。比特幣系統(tǒng)追求的平均分塊時間為10分鐘,需要調(diào)整難度目標(biāo)才能實現(xiàn)。
每隔2016區(qū)塊(約14天),比特幣系統(tǒng)就會自動調(diào)整一個難度目標(biāo)。當(dāng)所有區(qū)塊高度為2016年整數(shù)倍時,系統(tǒng)會自動調(diào)整難度目標(biāo)。如果最后一個難度目標(biāo)調(diào)整周期(即之前的2016個區(qū)塊)平均分塊時間大于10分鐘,說明挖掘難度偏高,需要降低挖掘難度,增加難度目標(biāo)(準(zhǔn)確地說是目標(biāo)值);相反,前一個難度目標(biāo)調(diào)整周期平均分塊時間小于10分鐘,說明挖掘難度較低,需要降低難度目標(biāo)。
比特幣系統(tǒng)的設(shè)定,難度目標(biāo)的上調(diào)和下調(diào)范圍有四倍的限制。例如,假設(shè)上一個難度目標(biāo)調(diào)整周期中的2016塊,由于計算能力飆升,只需7天就全部挖出來。通過難度目標(biāo)的調(diào)整,難度目標(biāo)可以減少一倍,平均分塊時間可以維持在10分鐘左右。但如果計算能力飆升,前2016塊全部挖出只需要一天,那么難度目標(biāo)最小只能調(diào)整到原來的四分之一。
比特幣的計算能力持續(xù)波動。比特幣系統(tǒng)通過調(diào)整難度目標(biāo),使平均分塊時間保持在10分鐘左右。難度目標(biāo)與挖掘難度成反比。挖掘難度越大,難度目標(biāo)越小。當(dāng)塊的高度是2016年的整數(shù)倍時,比特幣系統(tǒng)會自動調(diào)整塊上的難度目標(biāo)。如果在最后一個難度目標(biāo)調(diào)整周期中,平均分塊時間超過10分鐘,則會降低挖掘難度,增加難度目標(biāo);相反,會增加挖掘難度,降低難度目標(biāo)。難度目標(biāo)的上下調(diào)整范圍有4倍的限制。