困难调整算法是:
block_diff = parent_diff + parent_diff // 2048 * max(1 - (block_timestamp - parent_timestamp) // 10, -99) + int(2**((block.number // 100000) - 2)),其中//是整数除法运算符,例如。6/2= 3,7/2= 3,8/2= 4。
据我所知,我们选择了一个10秒的阈值来将阻塞时间保持在10-20秒的范围内。而且,源代码是可用的这里。因此,我是否可以修改算法(可能将//10更改为//5),并创建一个使用5 seconds来确认块的块链网络?这能实现吗?我希望通过这的博客文章得到这个问题的答案,但是我想不出这样做的确切的失败之处。
P.S:基本上,我有一个运行在私有块链上的应用程序,它需要更少的块确认时间。我以低难度(0x400)启动了区块链,但随着时间的推移,它增加了,以保持15秒的平均阻塞时间。因此,我正在寻找一种方法来防止这一困难的增加。在不妥协安全的情况下,这是否有可能实现?
我用的是geth-1.4.9
发布于 2016-07-13 19:11:38
需要考虑的一件事是孤儿率,在您链接到的线程的注释中提到了这一点。
你设定的难度越低,阻塞的时间就越短,这就是你的目标。
然而,难度越低,多个矿工同时解决这一问题的机会就越大,而链条分叉也就越大。这最终导致其中一个叉子中的块成为孤立的,这也是Ethereum (它有15秒的阻塞时间)已经使用鬼协议 (或它的有限版本)的原因。你必须进行实验,看看链的重排是否会导致你的网络问题。
请注意,您链接到的算法包括为困难炸弹所做的更改,这意味着难度将随着区块数的增加而增加。
... int(2**((block.number // 100000) - 2)) <---- this parthttps://ethereum.stackexchange.com/questions/7077
复制相似问题