难度调整机制是比特币众多的天才设计之一。今天,我们来看看比特币如何通过调整难度和全网算力相匹配,并使比特币的出块时间保持在平均 10 分钟左右。

原文标题:《比特币的难度调整机制》
文章来源:币信钱包

根据中本聪的设计,比特币平均 10 分钟产生 1 个区块。经过十年的发展,虽然挖矿设备从电脑 CPU 变成了专业 ASIC 矿机,计算能力从几乎为零涨到了最高 50 多 EH/s,但平均 10 分钟出 1 个块的设定一直得到了很好的保持(虽然由于算力几乎一直在增长,实际的平均出块时间略低于 10 分钟)。

在背后保证这一点的,是比特币的众多天才设计之一:难度(Difficulty)调整机制。简单地说,难度是一个动态的参数,它的目标就是保证不管挖矿能力如何,都保持 10 分钟产生一个新区块的速率。

每个周期,即每隔 2016 个区块,比特币网络就会调整一次难度,比较之前 2016 个区块的实际产生时间是否大于 20160 分钟(即每 10 分钟一个区块的期望)。如果之前 2016 个区块的平均产生时间不足 10 分钟,网络就会加大难度,反之,则会降低难度。

比特币究竟是如何确保平均每 10 分钟出一个块的?难度随着上个出块周期的表现而变化

我们可以用一个例子来理解这个机制:假设我们有一个老师希望全班考试平均分为 80 分,如果上次考试的平均分是 70 分,说明考题太难了,这次考试的题目应该变简单一点;如果上次考试的平均分是 90 分,说明考题太简单了,这次考试的题目就应该相应地变难一点。

这个公式可以总结为:

新目标值(Target) = 老目标值 * ( 前 2016 个区块的实际出块时间 / 20160 分钟)

为了防止难度变化过快,每个周期的调整幅度必须小于一个因子(值为 4,即旧有难度的 25%至 400%的范围)。如果要调整的幅度大于这个因子,则按 4 倍进行调整。也就是说,如果用时低于 5040 分钟,按 5040 分钟计算;如果用时高于 80640 分钟,按 80640 分钟计算。当然,下个周期会继续存在不平衡的情况,下下个周期还会继续调整难度。

比特币究竟是如何确保平均每 10 分钟出一个块的?2018 年底由于币价暴跌导致矿机大面积关机,难度连续三个周期大跌

来源链接:mp.weixin.qq.com