Bitcoinj

什麼是工作限制證明?

  • January 5, 2016

從 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…

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