Mining-Theory
了解雜湊函式
有人可以詳細解釋決定區塊獲勝者的最終雜湊的組成部分嗎?
我的理解是礦工們正在採取
- 默克爾根,
- 時間戳,
- 前一個區塊的雜湊,
- 其他一些組件??,以及
- 礦工必須猜測的隨機數,以便使用 Sha256 使所有這些組件的雜湊值至少有 18 個前導零。
我的問題是:
- 到目前為止,我的理解是否正確?
- 有人可以解釋其他組件是什麼以及它們輸入雜湊函式的順序是什麼?
- 使用 blockchain.info 上關於每個塊的可用數據,我可以通過將相同的數據輸入到 Sha256 計算器中來重新創建獲勝的雜湊嗎?
謝謝。
你很親密。正如 Mesh 已經說明的那樣,礦工正在對以下數據進行雜湊處理:
- nVersion(例如 02000000)
- HashPrevBlock(這個雜湊被反轉,然後每兩個字節翻轉一次)
- HashMerkleRoot(這個雜湊被反轉,然後每兩個字節翻轉一次)
- nTime(必須轉換為十六進制,例如 358b0553)
- nBits(目標難度,例如 535f0119)
- nNonce(隨機數據)
現在,對於您的第三個問題,是的,您可以!實際上,我昨天剛剛在 C# 中建構了一個小程序來執行此操作!它有一個小技巧,因為您不能直接將數據插入雜湊計算器並進行驗證。首先,將所有欄位附加到一個字元串中(在對前一個塊雜湊和 merkle 根進行雜湊反轉和翻轉之後)。然後,將該字元串轉換為二進制數據。此時,您執行雙重 SHA256 雜湊來驗證您是否獲得了該塊的有效雜湊。
一個有用的資源是用鉛筆和紙探勘比特幣以及比特幣維基。這兩個資源都有程式碼範例,顯示了這個過程的實際效果。