我目前正在出于教育目的开发测试山寨币,由于某种原因,在生成创世块之后无法生成第一个战俘块。几年前,我成功地制作了可行的破折号叉(或与过时的代码库类似的东西),但是我完全无法用现代代码库重现它。
所以,到这一点。我使用了PIVX存储库,相应地更改了 chainparams.cpp :
启动cpuminer,并在日志中失败,并显示以下内容:
2019-02-28 16:55:09错误:CheckProofOfWork():哈希与nBits不匹配
2019-02-28 16:55:09错误:CheckBlockHeader():工作证明失败
2019-02-28 16:55:09错误:CheckBlock():CheckBlockHeader失败
2019-02-28 16:55:09 CreateNewBlock():TestBlockValidity失败
我用 chainparams.cpp 中的代码重新生成了创世记-与创世记生成器相同。我尝试了 gen = 1 和 setgenerate true ,再次收到相同的错误,并且 getmininginfo 中的 hashespersec = 0
我开始在网上搜索,发现了很多相同的问题而没有任何答案。例如,这看起来完全一样-https://bitcoin.stackexchange.com/questions/79767/cannot-mine-genesis-first-block-pivx-fork-clone
我尝试了这种线程的解决方案-https://bitcointalk.org/index.php?topic=2152157.0;prev_next=next-但也没有成功。
我以为我可能会丢失某些东西,并尝试对其他PIVX叉子进行相同操作。第一个是https://github.com/IchibaCoin/ICHIBA-具有相同的错误。第二个是https://github.com/cruxcoinsource/CruxCoin-也有相同的错误。然后我挠头,深思熟虑,并用我的testcoin对两个硬币的/ src /文件夹中的所有文件运行diff。文件完全相同,仅在关键点和ichiba之间有所不同。
在 chainparams.cpp 的这一部分中,我尝试了所有可能的bool组合:
fMiningRequiresPeers = true;
fAllowMinDifficultyBlocks = false;
fDefaultConsistencyChecks = false;
fRequireStandard = true;
fMineBlocksOnDemand = false;
fSkipProofOfWorkCheck = false;
fTestnetToBeDeprecatedFieldRPC = false;
fHeadersFirstSyncingActive = false;
并且当 fMineBlocksOnDemand 设置为 true 时,命令 setgeneratetrue 返回的钱包密钥库为空,而 keypoolrefill >命令无效。
我在做什么错?..)))