Hash

為什麼 Target < Blockhash?

  • December 12, 2018

我目前正在嘗試針對 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_)
>&gt;&gt; 0x1f00ffff000000000000000000000000000000000000000000000000 0x55f67563d1c2cb141d06d52d2fca63ef457c553519aeb635a2643a9af0b1

if not target &gt;= hash_:
   print('False)
else:
   print('True')
>&gt;&gt; False

關鍵是,該目標小於塊雜湊。但事實並非如此。 誰能幫我?

感謝您的時間。

如果將難度位轉換為十六進制,您將獲得: 0x1F00FFFF

係數 =0x00FFFF

指數 =1F = 31

目標=Coefficient * 2**( 8 * ( exponent-3 ) )

目標 =0xFFFF帶有31 - 3 = 28尾隨 NULL ( 0x00) 字節

目標: 0x0000FFFF00000000000000000000000000000000000000000000000000000000

你的雜湊: 0x000055f67563d1c2cb141d06d52d2fca63ef457c553519aeb635a2643a9af0b1

所以你的 POW 實現了目標。可以肯定的是,您可能希望在 int/literal/hex 類型之間的轉換期間檢查字節順序。

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