Hash
為什麼 Target < Blockhash?
我目前正在嘗試針對 python3 中的目標驗證塊雜湊:
這是Blockcypher 測試網中的一個區塊,我使用的是比特幣 Wiki 中的這個公式。
block_hash = '000055f67563d1c2cb141d06d52d2fca63ef457c553519aeb635a2643a9af0b1' bits = '520159231' target = hex(int(bits) * (2**(8 * (0x1b - 3)))) hash_ = hex(int(block_hash, 16)) print(target, hash_) >>> 0x1f00ffff000000000000000000000000000000000000000000000000 0x55f67563d1c2cb141d06d52d2fca63ef457c553519aeb635a2643a9af0b1 if not target >= hash_: print('False) else: print('True') >>> False
關鍵是,該目標小於塊雜湊。但事實並非如此。 誰能幫我?
感謝您的時間。
如果將難度位轉換為十六進制,您將獲得:
0x1F00FFFF
係數 =
0x00FFFF
指數 =
1F = 31
目標=
Coefficient * 2**( 8 * ( exponent-3 ) )
目標 =
0xFFFF
帶有31 - 3 = 28
尾隨 NULL (0x00
) 字節目標:
0x0000FFFF00000000000000000000000000000000000000000000000000000000
你的雜湊:
0x000055f67563d1c2cb141d06d52d2fca63ef457c553519aeb635a2643a9af0b1
所以你的 POW 實現了目標。可以肯定的是,您可能希望在 int/literal/hex 類型之間的轉換期間檢查字節順序。