06 BTC-挖矿难度

《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click


06 BTC-挖矿难度

调整目标空间占输出空间的比例,来调整计算难度值。

difficulty_1_target:难度目标为1时候的目标阈值,是一个很大的值。

必须调整挖矿难度,不然随着设备的先进,出块时间会变得越来越短。


出块时间变短,增加了系统的响应时间,提高了系统的throughput,那这不是好事吗?

这个如果是好事的话,那么我们没必要把出块时间设置成10分钟了。

出块时间太短:分叉会成为常态,不仅是二分叉,可能出现很多的分叉,比如说10个区块被同时挖出来,会出现10分叉。

分叉如果过多的话,对于系统达成共识是没有好处的,而且也危害到系统的安全。

比特币协议是假设,大部分算力是掌握在诚实的矿工手里。

系统中的总算力越强,安全性就越好,因为要发动51%攻击(51% attack)所需要的算力就越大。

如果分叉过多,系统中的总算力会被分散,这个时候,可能就不需要51%的算力去发动攻击了,可能百分之十几就够了。


比特币10分钟的出块间隔就是最优的呢?出块时间必须有一个常数的波动范围,不能无限的减少下去。

以太坊中的出块时间降低到了15s,所以,以太坊的出快速度是比特币的40倍,出块时间大幅度下降之后,以太坊就要设计一个新的共识协议,叫做GHOST,将orphan block叫做uncle block,会给一定的奖励,以太坊同样需要调整挖矿难度,使得出块时间保持稳定。

平均出块时间设置多长,都需要保持稳定,而不能无限的减少下去。


怎么调整挖矿难度?

每隔2016个区块,调整挖矿难度。大概14天。

调整难度共识如下所示:

实际代码中,上调和下调最多有4倍的限制,一次调整不能超过4倍。


如果有恶意的节点,并没有调整自己的挖矿难度,那么怎么办?

如果不调,诚实的矿工不认可恶意节点产生的矿工。

nBits(4个字节),target(32个字节),nBits是target的一个压缩编码。


以太坊的挖矿难度调整,不是每隔多少个区块进行调整,而是每隔新出的区块都有可能进行难度调整。


出块时间10分钟是不是最好的?每个块最多1M字节是不是合适?为什么2016个区块调整难度?


比特币系统中的实际情况:

比特币系统中总算力的变化情况:

挖矿难度变化情况:

最近180天的挖矿难度变化:

比特币的出块时间:

下图公式与target的公式是反的:

posted @ 2023-05-02 12:22  YangYi215  阅读(72)  评论(0编辑  收藏  举报