Altcoin-Development
從比特幣 ReadBlockFromDisk 創建山寨幣:CBlockDiskPos 的塊頭錯誤
我正在嘗試使用比特幣原始碼創建山寨幣。
我已經更改了 pszTimestamp、埠號、幻數。我現在已經清除了 DNS 種子並刪除了檢查點。然後我使用 printf 列印了以下值並更新了新值: genesis.hashMerkleRoot 和 genesis.hashMerkleRoot
在日誌文件中,我看到此錯誤:
2017-10-04 18:32:29 錯誤:ReadBlockFromDisk:CBlockDiskPos(nFile=0,nPos=8)的塊標頭中的錯誤 2017-10-04 18:32:29 *** 無法讀取塊 2017-10- 04 18:32:29 錯誤:錯誤:發生了致命的內部錯誤,詳情請參閱 debug.log
我試圖調試程式碼,我發現這是它在 pow.cpp 中失敗的地方:
bool CheckProofOfWork(uint256 hash, unsigned int nBits, const Consensus::Params& params) { bool fNegative; bool fOverflow; arith_uint256 bnTarget; bnTarget.SetCompact(nBits, &fNegative, &fOverflow); // Check range if (fNegative || bnTarget == 0 || fOverflow || bnTarget > UintToArith256(params.powLimit)) { LogPrintf("\ncase 1\n"); return false; } // Check proof of work matches claimed amount if (UintToArith256(hash) > bnTarget) { //LogPrintf(bnTarget); LogPrintf("\ncase 2\n"); return false; } return true; }
它列印案例 2。這是什麼意思?我錯過了什麼?
我沒有使用程式碼執行中的默克爾散列,而是使用創世塊生成器來生成散列,通知。使用以下程式碼獲取值需要一個小時:
<https://github.com/Gnaf/GenesisBlockZero>
然後我使用了這個值,它起作用了。