Blockchain

如何手動驗證區塊?

  • April 28, 2020

根據我的理解,您只需要使用 SHA256 函式對塊的頭部(塊雜湊和 merkle 根)進行雜湊處理,然後像本文解釋的那樣在末尾添加隨機數。

但是,我無法獲得正確的下一個塊雜湊。通過使用塊#505400

Hash : 00000000000000000023b89dd18f6be5a6c03a71cd864ccbdf024683114b9ce3

Merkle root : a3defcaa713d267eacab786c4cc9c0df895d8ac02066df6c84c7aec437ae17ae

Nonce : 2816816696

Next block hash : 0000000000000000007625ff74171cf53e301c3e5013bf2184e2629a2da0fc8d

我所期待的:sha256(Hash + Merkle Root + Nonce) = Next Block Hash

但是我得到了這個:10345cb85ffed406a47e1faf31eb8ba1160aac0fbaae3cae0cd66889f9c9f49e

我做錯了什麼?

這不是創建塊頭的方式。塊頭構造為

  1. 版本
  2. 前一個區塊的雜湊
  3. 默克爾根
  4. 時間戳
  5. nBits 欄位
  6. 和隨機數。

一旦以字節為單位序列化,標頭將使用 SHA256 進行兩次散列,而不僅僅是一次。

一個常見的錯誤是對字節的十六進製表示的字元串進行雜湊處理,您必須對字節本身進行雜湊處理

有關更多資訊,請參見此處:https ://en.bitcoin.it/wiki/Block_hashing_algorithm

雜湊是該的雜湊。它沒有給出下一個塊的雜湊值,**沒有辦法知道下一個塊的雜湊值是什麼,**並且它可能是許多可能的雜湊值。

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