巴比特论坛

比原链solonet测试网络教程

发布者: 币学院| 发表于: | 查看: 129| 评论: 0 |来自: Leekailklk

129 0

比原主网正式上线了,很多人学习和研究比原,但苦于在主网环境不敢实际操作怕带来损失,在单机solo环境又无法获得测试币无法进行测试。本次主要介绍如何在solonet获得测试币并且测试。

在单机环境下,机器的算力不足无法达到Tensority设置的难度要求,所以需要研究相关的方法并重新设置。

0x01 难度调整研究

查看bytom/consensus/difficulty/difficulty.go

这个函数中,最终比较的是使用AI友好算法生成的随机哈希tensority.AIHash.Hash(hash, seed)使用HashToBig()转化为一个大数, 与预先设定好的一个难度的大数比较大小,这个大数由难度系数bits通过CompactToBig(bits)函数得出。

即这个函数最终比较HashToBig(compareHash) 和CompactToBig(bits)的大小,小于预定难度即工作量证明通过.

使用难度系数bits控制生成难度的大数的算法简介如下:

就是使用类似于IEEE754浮点数科学计数法而使用的二进制的大数科学计数法,即一个很大的数转化为 一个小数乘以10的n次方的二进制表示,最后又把表示转化为十进制保存。

0x02 修改源码

在使用单机solonet测试网络时很难通过获得测试币,于是考虑在不影响整个程序功能的情况下尝试做小的修改可以在单机跑起来,考虑修改难度系数bits,该系数在bytom/config/genesis.go文件中,初始值Bits:2161727821137910632。

为了更改bits,对代码bytom/consensus/difficulty/difficulty.go做如下修改:

这么做的目的是为了得到适合本机的难度系数。

0x03 编译运行

如果你已经运行过主网钱包,千万记住备份!备份!备份!

1、改完代码保存修改文件,编译bytom/cmd/bytomd/main.go 为bytomd.exe 清除系统原来在user/Administrator/AppData/Roaming中文件(千万记住备份主网钱包)。

2、运行bytomd init --chain_id solonet 和bytomd node --minging命令,在dashboard创建账户,几秒之后在命令行窗口会看见系统的运行信息,接着会得到类似下面的信息:

信息显示虽然挖矿失败了,但是通过运算我们可以得到很多适合本机难度的bits,每一个time="2018-05-18T11:57:36+08:00"level=infomsg="false:bits=2305843009225816433" 中的bits都适合本机难度,这个bits上面对应的level=info msg="HashToBig compareHash=后面这个值越大,难度系数就越低。

3、挑选一个bits,拷贝下来bits的值,在源代码中bytom/config/genesis.go文件中,初始值Bits: 2161727821137910632,修改为你自己的难度系数。 比如修改为Bits:2305843009228571441。

4、再次执行步骤1和步骤2.现在你应该可以在单机solo模式下获得测试币了。

0x04 其他的一些参数调整

另外bytom/consensus/general.go 文件中也会有一些参数:

这些字段修改也会影响测试币的产量速度,比如baseSubsidy = uint64(41250000000)指的是每块的产量412.5个btm,可以改大一点。 coinbasePendingBlockNumber = uint64(100)交易需要的确认数可以改小一些。

具体请自行研究。这一步不是必须的。

以上操作是针对使用命令行方式启动比原节点进行修改的,针对钱包桌面版的原理基本相同,需要使用钱包桌面版的请自行研究做相应替换。

感谢社区用户:Leekailklk
| 邀请
网友评论

0条评论

已有0人参与讨论

巴比特图书
返回顶部
分享 发帖