Bitcoind
如何在 PIVX Fork 中正確設置塊雜湊和 nBits 的屬性?
我已經複製了 PIVX(基本上是一個 DASH 叉子)並修改了基本參數。它編譯得很好。當我嘗試執行它時,伺服器啟動並且調試日誌文件顯示以下錯誤:
錯誤:CheckProofOfWork():雜湊與 nBits 不匹配
錯誤:CheckBlockHeader():工作證明失敗
錯誤:CheckBlock():CheckBlockHeader 失敗
為了生成我的創世塊,我更改了以下參數:
- pszTimestamp :使用隨機的最新消息。
- vAlertPubKey:使用此 pastebin 連結中提到的生成命令中的警報密鑰。
- scriptPubKey:使用了這個 pastebin 連結中提到的生成命令中的 genesis hex 。
- genesis.nTime : 獲得最新的 unix 時間戳。
- genesis.nNonce:從這個 pastebin 連結中提到的 genesis 塊創建算法獲得。
我能夠成功生成新的創世雜湊以及默克爾根。但是在編譯它之後,我得到了上述錯誤。
我試過在網上尋找解決方案,但除了這個之外,他們中的大多數都沒有具體的答案或根本沒有答案。
它解釋了我的創世塊的雜湊值大於使用
nBits
變數獲得的目標雜湊值。所以我的問題是如何確保我的創世雜湊小於目標雜湊以消除提到的錯誤?
我找到了答案。但是,如果我的解釋有誤,請糾正我。
基本上,一旦我們有了塊的輸入,我們就會對數據進行雜湊處理。這種散列可以使用多種技術來實現,即。SHA256、scrypt、X11等
為創世生成雜湊的問題是我使用 scrypt 算法來生成雜湊。您可能會遇到使用此方法的粘貼箱連結
scrypt_1024_1_1_256_sp_sse2
。所以在我的例子中,我用
uint256
類提供的方法替換了它。你可以在這個 pastebin找到這個創世創建邏輯。如果我錯了,請隨時添加任何內容或糾正我。