肖臻公开课(七)——比特币中的挖矿难度

本笔记对应北京大学肖臻老师《区块链技术与应用》公开课第七课。

0.前言

在本节中,肖老师介绍了比特币的挖矿难度的调整算法。

1.定义

在比特币的挖矿算法中,需要找出一个“恰当”的区块头,让区块头的哈希值小于目标值(如下图),才能获得记账权。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X1Em0qjo-1677069663198)(https://gitee.com/yu88888//myimage/raw/master/master/image-20211014200454670.png)]
调整挖矿难度就是调整目标空间在整个输出空间中所占的比例。

2.为什么要调整难度?

因为整个系统中的算力是不断上升的,如果难度不变,那么出块时间就会越来越短,引起大量问题。

比如说,因为出块时间短,遇到了网络延迟,就会导致短时间内很多的节点同时算出了目标值得到了记账权,这样就产生了很多分叉,这对系统的安全性没有好处。

注意: 比特币中10分钟的出块速度也不一定是最优的,也有其他的公链有其他的出块速度,比如以太坊的出块速度为15秒,而它之所以能做到这么快,是因为有Ghost协议。

3.怎么调整难度

  • 时间: 比特币协议规定,每隔2016个区块(大概14天)就会调整一次。
  • 公式
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TOaax3Ht-1677069663199)(https://gitee.com/yu88888//myimage/raw/master/master/image-20211014200435933.png)]
    公式最右边分式的上面表示实际时间,下面表示预期时间。

实际时间为这次调整的时间,距离上次调整的时间的长度。预期时间为2016个区块按照预期规定来说(每两个区块间相隔10分钟),需要花费的长度。

因此,如果这轮调整中,实际时间大于了预期时间,那么就会调低难度,反之,就会调高难度。

猜你喜欢

转载自blog.csdn.net/doreen211/article/details/129170169