Difficulty
nBits 值代表什麼?
當礦工對區塊頭進行雜湊處理並產生低於所代表值的雜湊值時,
nBits
則認為 PoW 已解決。這到底是什麼意思?例如,SHA256 雜湊具有以下結構:
c45bc3de9bff9ee27fc7303a3aa4fa8022ab6608d42bbea4d72bbee9b719703b
如何確定它是否低於某個nBits
值?
nBits
指目標。目標與難度成反比,並被編碼為 256 位數字的緊湊表示。32 位欄位的第一個字節表示指數,其餘 3 個字節編碼尾數。例如,第一個(也是最大)目標是
0x1d00ffff
,它是 256 位數字的緊湊表示0x00000000ffff0000000000000000000000000000000000000000000000000000
,前 32 位設置為 0,後跟 16 位設置為 1,然後是尾數未定義的剩餘位被設置為零。塊散列通常表示為十六進制數字(包括
A–F
數字 10-15 的字母),但塊散列由 SHA256d 散列產生,SHA256 的輸出是 256 位數字(因此得名)。當礦工搜尋有效區塊時,他們會創建大量候選區塊。當這些候選者之一的雜湊摘要(解釋為 256 位數字)小於或等於目標時,礦工找到了一個有效塊。您可以使用以下公式從目標計算難度:
difficulty = max_target / current_target
其中
max_target
代表上述初始目標,對應最低難度。或者,該公式適用於:difficulty = 2^208 * 65535 / current_target.