代码生成创世块
代码生成创世块,中文资料真是太少了,少的可怜,来来回回基本就那1,2篇介绍的,还不全,半吊子,坑,还是英文资料多。
一· c++生成创世块
CBlock &block = const_cast<CBlock&>(chainparams.GenesisBlock());之后加这个,然后在debug.log里面可以看到生成的创世块了
CBlock &block = const_cast<CBlock&>(chainparams.GenesisBlock());
// Start new block file
uint256 bnTarget;
bool fNegative;
bool fOverflow;
uint256 hashGenesisBlock;
block.nBits = 0x1f00ffff;
// bnTarget.Compare(block.nBits, &fNegative, &fOverflow);
// LogPrintf("ProofOfWorkLimit %s\n", Params().limit .ProofOfWorkLimit().ToString());
if (fNegative || fOverflow ) {
error("InitBlockIndex CheckProofOfWork() : nBits below minimum work");
}else {
block.nTime = GetTime();//1231006505;
LogPrintf("block.nTime %d\n", block.nTime);
LogPrintf("bnTarget %s\n", bnTarget.ToString());
block.nNonce = 0;
while (true) {
if (block.nNonce%1000000000 == 0)
LogPrintf("block.nNonce--- %d\n", block.nNonce);
hashGenesisBlock = block.GetHash();
// LogPrintf("hashGenesisBlock--- %s %s\n", hashGenesisBlock.ToString(), bnTarget.ToString());
if ( (hashGenesisBlock) < (bnTarget)){
break;
}
if ( hashGenesisBlock.ToString() <= "0000ffff00000000000000000000000000000000000000000000000000000000"){
break;
}
block.nNonce++;
}
LogPrintf("block.nNonce******** %d\n", block.nNonce);
LogPrintf("hashGenesisBlock******** %s\n", hashGenesisBlock.ToString());
LogPrintf("hashMerkleRoot******** %s\n", block.hashMerkleRoot.ToString());
}
unsigned int nBlockSize = ::GetSerializeSize(block, SER_DISK, CLIENT_VERSION);
2)LoadBlockIndexDB: transaction index disabled 使用-reindex选项重新启动bitcoind,并等待它重建索引,等待重建索引的完成就可以了。bitcoind -printtoconsole -reindex
重建索引参考
二· 修改创世块及难度 https://www.ligphp.com/post/83.html
三· nodejs生成创世块
git clone https://github.com/nasa8x/node-genesis-block.git genesis-block
cd genesis-block
npm install
node genesis -a x11 -z "Don't work for weekends, work for our goals - 18/Jan/2018." -p "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f"
会生成这些信息
algorithm: x11
pzTimestamp: Don't work for weekends, work for our goals - 18/Jan/2018.
pubkey: 04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f
bits: 504365040
time: 1521537891
merkle root hash: 77fc7d6cfbc4ec91703444a515955092d4b7c04dbb8f23be59deb42a39ec0057
Searching for genesis hash...
nonce: 1827816
genesis hash: 0000084e98003628c45719136940cf7068805f4024419a51d6259fb676c299da
create a Genesis Block for a new Blockchain with Node.js
生成Genesis Block后, 去修改chainparams.cpp文件
四· python生成创世块
五. 讲解 , 讲解代码