Hash

比特幣難度粒度

  • February 26, 2020

難度以非常精細的百分比調整,以 10 分鐘為目標。但是,在有效塊的標頭雜湊要求的零鏈末尾添加另一個零會增加難度指數。那麼,Alogrithm 是如何僅通過使用“零”來如此精確地瞄準正確的呢?

難度實際上由編碼在nBits塊頭中的值中的目標門檻值表示。難度代表人類可讀的表示(“我們需要多久嘗試一次找到解決方案”),目標門檻值定義了一個塊必須低於前綴才能有效。這意味著解釋為數字的 256 位塊雜湊必須低於目標門檻值。雖然,nBits只是一個 4 字節的值,但它是 256 位(32 字節)數字的壓縮表示。第一個字節定義指數,其餘三個字節為目標提供 24 位尾數。

雖然這使得目標門檻值中的大部分 32 字節僅由零組成,但與僅添加前導零相比,難度可以以更精細的方式進行調整。

David Harding 在如何計算區塊頭的目標部分?.

作為@Murch 回答的補充,我想舉一個來自Grokking Bitcoin的例子:

目標以 4 個字節寫入塊頭,ABCD; 32 字節目標計算為BCD× 2^(8*(A-3))。那是它後面的BCDA-3字節。這很尷尬,因為我們必須能夠僅用 32 位表示範圍廣泛的目標,1–2^256。Qi 的 [書中的一個字元] 塊中的目標寫為 1c926eb9,表示926eb9( 後有 25 個零字節1c–3 = 19,十六進制程式碼為 25)。

引用自:https://bitcoin.stackexchange.com/questions/92990