Hash
比特幣難度粒度
難度以非常精細的百分比調整,以 10 分鐘為目標。但是,在有效塊的標頭雜湊要求的零鏈末尾添加另一個零會增加難度指數。那麼,Alogrithm 是如何僅通過使用“零”來如此精確地瞄準正確的呢?
難度實際上由編碼在
nBits
塊頭中的值中的目標門檻值表示。難度代表人類可讀的表示(“我們需要多久嘗試一次找到解決方案”),目標門檻值定義了一個塊必須低於前綴才能有效。這意味著解釋為數字的 256 位塊雜湊必須低於目標門檻值。雖然,nBits
只是一個 4 字節的值,但它是 256 位(32 字節)數字的壓縮表示。第一個字節定義指數,其餘三個字節為目標提供 24 位尾數。雖然這使得目標門檻值中的大部分 32 字節僅由零組成,但與僅添加前導零相比,難度可以以更精細的方式進行調整。
David Harding 在如何計算區塊頭的目標部分?.
作為@Murch 回答的補充,我想舉一個來自Grokking Bitcoin的例子:
目標以 4 個字節寫入塊頭,
ABCD
; 32 字節目標計算為BCD
× 2^(8*(A-3))。那是它後面的BCD
零A-3
字節。這很尷尬,因為我們必須能夠僅用 32 位表示範圍廣泛的目標,1–2^256。Qi 的 [書中的一個字元] 塊中的目標寫為1c926eb9
,表示926eb9
( 後有 25 個零字節1c–3 = 19
,十六進制程式碼為 25)。