视频教程地址:
http://v.youku.com/v_show/id_XMzM5ODcyODkxNg==.html?spm=a2h3j.8428770.3416059.1
http://v.youku.com/v_show/id_XMzM5ODg0MDc5Mg==.html?spm=a2h3j.8428770.3416059.1
http://v.youku.com/v_show/id_XMzM5ODk1MzU1Ng==.html?spm=a2h3j.8428770.3416059.1
http://v.youku.com/v_show/id_XMzQwMTU1MjMzMg==.html?spm=a2h3j.8428770.3416059.1
接下来我们将对代码进行关键性的修改,包括main.cpp checkpoints.cpp
在main.cpp中找到以上两处代码,删掉uint256后面的校验值,只留下0x即可,然后对pchMessageStart的4个值进行调整,例如:
找到下列代码,将其中红框框选的部分作出修改,比如前5位改为12345。改其他数字也可以,只要保证数量相同
然后将上图中的“NY Times 05/Oct 2011 Steve…”这句话改为任意一句你喜欢的话,比如”I like it”
百度current epoch time获取到当前的时间数值,我现在是1515922950
接下来将下图中的两个nNonce修改为0,两个nTime修改为刚刚百度得到的值
删除block.hashMerkleRoot == uint256(“0x97d….ed9”)中间97d到ed9的这段字符串,只留下0x
修改时间设置,我这里分别改成了nTargetTimespan = 10 * 30和 nTargetSpacing = 1* 30
只留下map_list_of的第一行,其他的行全删掉,第一行的内容修改为 ( 0, uint256(“0x”))
然后找到下面这个位置
注释掉1410516073,4896865, 7000.0 , 1365458829, 547, 576这6行(在行首添加//)
将545, uint256(“0xa0fea..e602”))修改为0, uint256(“0x”))
其中的strMainNetDNSSeed有6行数据,删掉中间4行,将第一行的修改为{“learncointools.com”, “192.168.1.122”},其中192.168.1.122换成你自己ubuntu的IP
在main.cpp的第2810行加入下面代码:
if (true && block.GetHash() != hashGenesisBlock)
{
printf("Searching for genesis block...\n");
// This will figure out a valid hash and Nonce if you're
// creating a different genesis block:
uint256 hashTarget = CBigNum().SetCompact(block.nBits).getuint256();
uint256 thash;
char scratchpad[SCRYPT_SCRATCHPAD_SIZE];
loop
{
scrypt_1024_1_1_256_sp(BEGIN(block.nVersion), BEGIN(thash), scratchpad);
if (thash <= hashTarget)
break;
if ((block.nNonce & 0xFFF) == 0)
{
printf("nonce %08X: hash = %s (target = %s)\n", block.nNonce, thash.ToString().c_str(), hashTarget.ToString().c_str());
}
++block.nNonce;
if (block.nNonce == 0)
{
printf("NONCE WRAPPED, incrementing time\n");
++block.nTime;
}
}
printf("block.nTime = %u \n", block.nTime);
printf("block.nNonce = %u \n", block.nNonce);
printf("block.GetHash = %s\n", block.GetHash().ToString().c_str());
}
加入的位置是在assert(block.hashMerkleRoot == uint256(“0x”));的下面,这是我们刚刚修改过的地方
这一点很重要,待会代码需要上传到github
在src目录下执行make -f makefile.unix USE_UPNP=-
运行maxcoind,正常情况下会crush。此时回到用户根目录,会有一个.maxcoin的隐藏文件夹,打开其中的debug.log文件,它的最后一行就是merkle数值
把这个数值放到main.cpp中
放到0x后面,这是我们之前修改的地方
在src目录下执行make -f makefile.unix USE_UPNP=-
再次运行maxcoind,此时它会重新计算创世区块和nNone,一段时间后会再次崩溃,我用的IBM3250服务器,可能花了10多分钟
后续如果大家有需要出相关的视频,有问题或者交流可以进群 425499445 讨论,只有知识共享才能促进比特币的繁荣。