Mining-Theory

了解雜湊函式

  • January 5, 2018

有人可以詳細解釋決定區塊獲勝者的最終雜湊的組成部分嗎?

我的理解是礦工們正在採取

  1. 默克爾根,
  2. 時間戳,
  3. 前一個區塊的雜湊,
  4. 其他一些組件??,以及
  5. 礦工必須猜測的隨機數,以便使用 Sha256 使所有這些組件的雜湊值至少有 18 個前導零。

我的問題是:

  1. 到目前為止,我的理解是否正確?
  2. 有人可以解釋其他組件是什麼以及它們輸入雜湊函式的順序是什麼?
  3. 使用 blockchain.info 上關於每個塊的可用數據,我可以通過將相同的數據輸入到 Sha256 計算器中來重新創建獲勝的雜湊嗎?

謝謝。

你很親密。正如 Mesh 已經說明的那樣,礦工正在對以下數據進行雜湊處理:

  • nVersion(例如 02000000)
  • HashPrevBlock(這個雜湊被反轉,然後每兩個字節翻轉一次)
  • HashMerkleRoot(這個雜湊被反轉,然後每兩個字節翻轉一次)
  • nTime(必須轉換為十六進制,例如 358b0553)
  • nBits(目標難度,例如 535f0119)
  • nNonce(隨機數據)

此資訊可在比特幣開發者參考PDF中找到。

現在,對於您的第三個問題,是的,您可以!實際上,我昨天剛剛在 C# 中建構了一個小程序來執行此操作!它有一個小技巧,因為您不能直接將數據插入雜湊計算器並進行驗證。首先,將所有欄位附加到一個字元串中(在對前一個塊雜湊和 merkle 根進行雜湊反轉和翻轉之後)。然後,將該字元串轉換為二進制數據。此時,您執行雙重 SHA256 雜湊來驗證您是否獲得了該塊的有效雜湊。

一個有用的資源是用鉛筆和紙探勘比特幣以及比特幣維基。這兩個資源都有程式碼範例,顯示了這個過程的實際效果。

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