什么是比特币挖矿难度?如何调整?原理是什么?

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

目标值是个长度为 256 比特的字符串,换句话说目标值约有 2^256 种可能的取值。调整难度目标就是调整目标值在整个输出空间的占比。

举例说明:挖矿就如射击,所有射出去的子弹都会落在一个很大的靶子上。难度目标就是这个大靶子上圈出一个范围,这个范围越小,被射中的难度就越高。调节难度目标,就是调节这个圈在整个靶子上的占比。

挖矿算力增大,单位时间射击的次数就越多,目标范围被射中所需的时间就越短。反之,挖矿算力减小,目标范围被击中所需的时间就越长。而比特币系统追求的平均出块时间为 10 分钟,这时候就需要调整难度目标来实现。

02 如何调整难度目标?

比特币系统是怎样调整难度目标的呢?在《白话区块链入门 080 | 数说比特币,了解比特币必须知道这 10 个数字》一文中,我们介绍了比特币系统每过 2016 区块(大约为 14 天时间),会自动调整一次难度目标。所有区块高度为 2016 整数倍的区块,系统就会自动调整难度目标。如果上一个难度目标调整周期(也就是之前 2016 个区块),平均出块时间大于 10 分钟,说明挖矿难度偏高,需要降低挖矿难度,增大难度目标(准确地说是目标值);反之,前一个难度目标调整周期,平均出块时间小于 10 分钟,说明挖矿难度偏低,需要缩小难度目标。

03 难度目标的可调范围

比特币系统设定,难度目标上调和下调的范围都有 4 倍的限制。举例说明:假设上一个难度目标调整周期内的 2016 个区块,由于算力暴涨,只用 7 天就全部挖出来了,通过难度目标调整,将难度目标缩小一倍,可以将平均出块时间维持在 10 分钟左右,但如果算力暴涨,前 2016 个区块全部挖出只用了 1 天,那么难度目标最小只能调整为原来的四分之一。

04 总结

比特币的算力是持续波动的,比特币系统通过难度目标的调整,使得平均出块时间维持在 10 分钟左右。难度目标和挖矿难度成反比,挖矿难度越大,难度目标越小。当区块高度为 2016 的整数倍时,比特币系统就会在该区块上,自动调整难度目标。如果上一个难度目标调整周期内,平均出块时间超过 10 分钟,那么降低挖矿难度,增大难度目标;反之则提高挖矿难度,减小难度目标。难度目标上调和下调的范围都有 4 倍的限制。

比特币每 2016 个区块(大约 14 天)调整一次挖矿难度,相比于 BCH 每个区块都调整(大约 10 分钟调整一次),有明显的滞后性。你认为是哪种调整方式更合理呢?为什么呢?欢迎在留言区分享你的观点。

本文转载自,不具备任何投资参考,本文观点不代表真牛24财经立场。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

微信
微信
移动端
移动端
分享本页
返回顶部