Blockchain

Target Hash是如何確定的?

  • February 10, 2021

所以,我了解如何計算前導 0 的數量,但是如何計算前導 0 之後的十六進制?例如,之前開采的區塊雜湊是, 000000000000000000084bc771b929b0780276b1c31cec10a96921b1e53b970a但是 0 之後的值是如何84bc771b929b0780276b1c31cec10a96921b1e53b970a確定的?

我看到了這個答案:https ://bitcoin.stackexchange.com/a/36228/110284但我不會撒謊,我不明白。

這裡有兩個價值觀,你的問題的措辭讓我覺得你混淆了它們。

每個塊都有:

  • 雜湊(由雙 SHA256 計算的塊頭,包括時間戳、隨機數、版本、Merkle 根、編碼難度的 nBits 和前一個塊雜湊)
  • 一個目標(僅根據難度計算)

000000000000000000084bc771b929b0780276b1c31cec10a96921b1e53b970a是塊號 669945 的雜湊值。只需將塊的標頭精確地輸入雙 SHA256 即可得到此輸出(包括前面的零)。它被解釋為一個數字:

  • 0x000000000000000000084bc771b929b0780276b1c31cec10a96921b1e53b970a(十六進制,顯式為零)
  • 0x84bc771b929b0780276b1c31cec10a96921b1e53b970a(十六進制)
  • 794600089940753232651370066465976921098309156434843402(轉換為十進制)

目標是雜湊必須滿足工作量證明要求的最大允許值。它完全由難度()決定(而難度又由它所建立的鏈中先前區塊的時間戳決定)。該難度也作為“nBits”值儲存在塊頭本身中。塊 669945 的 nBits 值為 0x170d21b9;它編碼0x0d21b9 · 256 0x17 - 3*,等於:

  • 0x0d21b9000000000000000000000000000000000(十六進制)
  • 1257769770588612382309009370720465882998915202417688576(轉換為十進制)

由於 794600089940753232651370066465976921098309156434843402(實際雜湊值)小於 1257769770588612382309009370720465882998915202417688576(該塊的證明值)是有效的。當然是;如果不是,您將永遠不會聽說過這個(嘗試過的)候選區塊。

() 從技術上講,“難度”一詞僅用於表示一個塊對人類消費的難度。內部只使用了 nBits 和完整的目標值。難度定義為0xffff·256 26 / 目標*。目標越低,越難找到雜湊值低於它的塊,因此難度越高。

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