Hash

計算區塊頭雜湊需要哪些實際步驟?

  • February 10, 2022

據我所知,標題雜湊將按如下方式計算:

  1. 序列化所有標題欄位,包括“nonce”
  2. 將序列化的標頭散列一次
  3. 再次散列散列的序列化標頭
  4. 檢查結果是否低於目標
  5. 如果否:選擇不同的隨機數並重新開始

我指的是這個站點,它允許您輸入一些標頭數據併計算標頭雜湊:

<https://learnmeabitcoin.com/tools/hashblockheader/?version=536870912&hashPrevBlock=00000000000000000001eaef94e697cae4216042819d6e2c6ec1c959f8112b38&hashMerkleRoot=eb9439ab4f13d3bd448b792d30a97e4632e567d5e6e40c2d5c9a72f27edbddbd&time=1644443882&bits=170a8bb4&nonce=3156027&submit=true>

該站點已經計算了我必須用於散列過程的序列化標頭:

00000020382b11f859c9c16e2c6e9d81426021e4ca97e694efea01000000000000000000bddddb7ef2729a5c2d0ce4e6d567e532467ea9302d798b44bdd3134fab3994ebea380462b48b0a173b283000 

因此,通過 SHA256 執行這個序列化標頭兩次,在第一次迭代後給了我這個雜湊:

969d0e7028705a4ca408430f5d2bcb05acbcd6c3350f43a838714a2ba5db94f0

再次散列會返回:

9fe2e96559673ba8e038452cc161e2da87636567d95ef7ae6be800770a5cbf9f

但這不是這個塊頭的實際雜湊值。顯然,因為從 9 開始似乎不是很困難。那是正確的標題:

000000000000000000055730c92292ebd5c5851e7d24ab3ba2efc1cea0b5fe81

所以我想知道,我在這裡缺少什麼額外的步驟?

謝謝

問題是您將標頭作為字元串進行散列,而不是作為十六進製表示的字節。如果將其雜湊為字節,您將獲得預期的雜湊。標頭和第一個雜湊都必須被視為字節,而不是十六進製字元串。

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