Protocol
區塊頭的目標部分是如何計算的?
我一直在尋找<https://en.bitcoin.it/wiki/Target>並找到了目前目標,但我似乎無法找到它是如何生成的。它應該是在調整難度時生成的,如此處所述:https ://en.bitcoin.it/wiki/Block_hashing_algorithm ,但生成目標的算法究竟是什麼?如果有人可以向我展示一些虛擬碼,那就太好了。
塊頭的目標部分在程式碼中稱為nBits。nBits 是 256 位目標門檻值的 32 位緊湊編碼。它像科學記數法一樣工作,只是它使用 base-256 而不是 base-10。例如,如果 nBits 等於 0x181b8330,你可以這樣計算:
或者,更簡單地說,您可以使用與正常科學記數法相同的速記:
在重新定位點(每 2,016 個區塊),Bitcoin Core 根據此答案中描述的規則調整 nBits ,但需要注意的是,當難度變化p % 時,nBits 會按逆向調整(-p % )。那是因為較低的目標更難達到比特幣的實施方式。
同樣重要的是要注意,您不能以明顯的方式調整 nBits 的指數部分,因為當 Satoshi 第一次編寫程式碼時,他繼承自有符號類型 — 所以必須特別注意不要創建負數 nBits價值。Bitcoin.org 開發者參考有更多細節(但要小心,我還沒有專家評論該部分)。