Difficulty
挖礦難度如何定義(公式)?
礦工嘗試的 sha256(s) 結果是一個 256 位長的數字(64 位十六進制數)。
我知道這個 256 位數字應該低於目標門檻值,目標門檻值本身就是一個 256 位長的數字,帶有多個前導零。
目標門檻值在塊的頭部用 4 個字節編碼,十六進製表示為 0xEEMMMMMM。EE 是 1 字節的指數,MMMMMM 是 3 字節的尾數。
這些指數和尾數究竟是如何轉換為實際的 256 位長目標門檻值的?
nBits 欄位基本上是 base-256 中的科學計數法(256 是 2^8)。例如,我們以Bitcoin.org Developer Reference上的那個為例:
0x181bc330
(Big-Endian order)。這分為兩部分,0x18
指數(十進制為 24)和0x1bc330
尾數。尾數是 3 個字節長,所以從指數中減去 3,然後將 256 提高到該次方,然後乘以尾數,就像科學計數法一樣:0x1bc330 × 256 ^ (0x18 - 3)
給出目標,尾數後跟 21
0x00
個字節,或十六進制的 42 個零。有關另一個範例,請參見此答案:https ://bitcoin.stackexchange.com/a/61967/51948
編輯:您也可以將其視為分配指數中給出的字節數,在這種情況下
0x18=24 bytes
,而不是用尾數填充前 3 個字節。