当前位置:   article > 正文

《区块链技术与应用》-07-BTC-挖矿难度_输出空间2^256

输出空间2^256

为什么要调整挖矿难度

挖矿难度

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
  • 1
  • 2

实际代码中上调和下调有4倍的限制。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/714224
推荐阅读
相关标签
  

闽ICP备14008679号