主页 > imtoken官网安卓下载 > 白话区块链介绍085 |比特币系统如何调整挖矿难度?

白话区块链介绍085 |比特币系统如何调整挖矿难度?

imtoken官网安卓下载 2023-02-09 07:15:18

之前有读者在“”留言区提问:

1、谁先找到问题的答案,谁就获得了这次记账的权利。问题是什么?

2、随着全网算力的增加,问题的难度系数也随之增加。这是如何实现的?

image.png

对于第一个问题,白话区块链曾经在文章“”中解释过:

比特币系统给矿工的问题是让矿工找到满足要求的随机数。矿工构建区块并确定区块头中的其他五个字段。另一个需要不断试错的变量是随机数。只有符合要求的随机数才能召唤出“龙”。满足要求意味着:取整个区块头的哈希值,使得哈希值小于等于难度目标(准确的说是目标值Target)。

今天我们主要回答第二个问题:比特币系统的挖矿难度目标是多少,如何调整?

01

什么是难度目标?

难度目标是比特币系统中的一个参数,它调节挖掘一个区块所需的平均时间。是区块头6个字段之一。

比特币挖矿难度(Difficulty)是衡量挖矿难度的指标。挖矿难度越大,挖出区块的难度就越大。目标值(Target)与挖矿难度成反比。难度越高,目标值越小。难度目标是通过目标值转换得到的,目标值是一个只有4字节的字段(为了便于理解,本文将难度目标作为目标值)。比特币系统通过调整区块头中的难度目标来控制挖掘区块所需的平均时间。

目标值是一个长度为 256 位的字符串。也就是说,目标值的值空间是0到2^256,有2^256个可能的值。调整难度目标就是调整目标空间在整个输出空间中的比例。

例如:采矿就像射击,所有发射的子弹都会落在一个大目标上。难度目标是在大目标上圈出一个范围。范围越小,就越难被击中。调整难度目标就是调整这个圆圈在整个目标上的比例。

image.png

挖矿算力增加,单位时间内发射的炮弹越多,击中目标射程所需的时间就越短。反之,挖矿算力越低,命中目标范围的时间就越长。比特币系统所追求的平均出块时间为10分钟,需要调整难度目标才能达到。

02

如何调整难度目标?

比特币系统如何调整难度目标?在《》一文中,我们介绍了比特币系统每 2016 个区块(约 14 天)自动调整难度目标。对于所有高度为2016整数倍的区块,系统会自动调整难度目标。如果上一个难度目标调整周期(即之前的2016个区块)平均出块时间大于10分钟比特币挖矿入门,说明挖矿难度过高,需要降低挖矿难度,增加难度目标否则,上一次难度目标调整期,平均出块时间小于10分钟,说明挖矿难度较低,需要降低难度目标。

image.png

如果写成公式:

当前难度目标 = 上一周期难度目标 * 实际时间/目标时间。

实际时间为挖2016个区块所需时间,目标时间为14天。

03

难度目标可调范围

比特币系统设置,难度目标上下限4倍。例如:假设由于算力暴涨,上一个难度目标调整周期的2016个区块仅用了7天就全部挖出,通过难度目标调整,难度目标翻倍,可以减少平均出块时间维持在 10 分钟左右,但如果算力暴涨,2016 年第一个区块全部挖完只需要 1 天,难度目标只能调整到原来的四分之一。

04

总结

比特币的计算能力不断波动。比特币系统调整难度目标比特币挖矿入门,将平均出块时间保持在 10 分钟左右。难度目标与挖矿难度成反比,挖矿难度越大,难度目标越小。当区块高度为 2016 的整数倍时,比特币系统会自动调整该区块的难度目标。如果上一次难度目标调整周期的平均出块时间超过10分钟,则降低挖矿难度,增加难度目标;否则,增加挖矿难度,降低难度目标。难度目标上下范围有 4 倍的限制。

在算力稳定变化的情况下,挖矿难度越低,出块时间越短,比特币单位时间内可以处理更多的交易。从提高交易处理速度的角度看,这是好事,为什么比特币要调整难度来维持10分钟的出块时间?你怎么看待这件事?欢迎在评论区分享你的看法。