赞
踩
SHA-256产生的输出有256位,输出空间为2^256个可能取值,调整目标空间大小,简单来说就是满足输出值的前面几位是0。
挖矿难度和目标阈值成反比,如下图所示,其中difficulty_1_target为是挖矿难度为1时候的target(0111111…),即最小挖矿难度。
系统总算力加强,区块难度不变的话,出块时间会变短,而不能维持人为选择的参数10min。
假设出块1s,传播几十秒,两个节点同时收到一个区块,又同时发布了一个区块,这时候会出现分叉,故出块时间短多分叉会成为常态。分叉过多对系统达成共识没有好处,而且危害系统的安全性。比特币系统假设大部分算力掌握在诚实的节点手里,系统总算力越强,安全性就越好,因为发动51%的攻击所需要的算力就越多,而多分叉会导致系统中的总算力分散,而有恶意的节点集中了算力进行分叉攻击,这时候只需少于51%的算力就可以进行回滚了。
以太坊出块速度是比特币的40倍,即15s,因此设置了一个新的共识协议交ghost,这时候,分叉产生的orphan bliock不能简单地丢弃,而是也有奖励(uncle reward)。
比特币协议中规定了每隔2016个区块要调整目标阈值,大概是两个星期(2016 * 10min / 60min * 24h=14天),调整的公式如下图所示
actual time --- time spent mining the last 2016 blocks
expected time --- 2016 * 10
实际代码中上调和下调有4倍的限制。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。