Altcoin-Development

從比特幣 ReadBlockFromDisk 創建山寨幣:CBlockDiskPos 的塊頭錯誤

  • January 29, 2018

我正在嘗試使用比特幣原始碼創建山寨幣。

我已經更改了 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>

然後我使用了這個值,它起作用了。

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