Bitcoinj
什麼是工作限制證明?
從 android 比特幣錢包看下面的程式碼:
proofOfWorkLimit = Utils.decodeCompactBits(0x1d00ffffL);
並查看來自比特幣 qt 錢包的程式碼:
static CBigNum bnProofOfWorkLimit(~uint256(0) >> 32);
我假設在第二種情況下,ProofOfWorkLimit 是 32“0”和 224“1”(000000…000111111111….11111111)?
所以我不知道如何從第二種情況中獲得第一種情況“0x1d00ffffL”?在二進制中,“0x1d00ffffL”是 11101000000001111111111111111。
PS我看過uint256.h。這沒有幫助。
第一個字節 1D 是長度。接下來的三個字節是雜湊的高字節。所以我們有
00ffff
,然後我們將ff
字節添加到末尾以達到 29 個字節。然後我們就完成了。我們以 3 個字節的前導零結束,因為 32-29 是 3。我們從緊湊位的第二個字節中得到一個零字節。所以最終的結果是 00,00,00,00,ff,ff,ff…