新人科普丨什么是比特币的“挖矿难度”?

This article is not available in the current language yet. Showing the original version.
在比特币系统中工作量证明是有一定难度的,难度保持在整个系统中平均10分钟才能增加一个区块,那是如何维持这样的一个水平的呢?是通过区块头中的一个难度目标值(target)来决定的。

作者:Zarten

本文首发于区块链技术详解知乎专栏,题目:比特币工作量证明难度值及难度调整详解

【作者按】在比特币系统中工作量证明是有一定难度的,难度保持在整个系统中平均10分钟才能增加一个区块,那是如何维持这样的一个水平的呢?是通过区块头中的一个难度目标值(target)来决定的。

下面讲解比特币系统中的这个难度值和如何调整难度值。

难度值

在每个区块头中都有一个“Bits”字段,被称为“目标位”,也就是所谓的难度值。如下所示:

新人科普丨什么是比特币的“挖矿难度”?

我们知道,在比特币系统中满足下面公式即为挖矿成功:

H(block header) <= target

那么这个target是通过Bits得来的。

难度目标值(target)计算公式

target以指数形式存在,以十六进制表示,总共有8位,前2位为指数,后6位为系数。

所以上图中,指数为0x17,系数为0x1320bc

计算公式为:

难度值(target) = 系数 * 2^(8 * (指数 - 3))

因此上图中的难度值为:

难度值(target) = 0x1320bc * 2^(8 * (0x17 - 3))

这个算出来是个很大的数,结果为:

十进制为:1832085838499075985755083973639154607251969422303166464

十六进制为:0x1320bc0000000000000000000000000000000000000000

在比特币系统中,难度值越小,挖矿难度就越大,因为哈希值可落的范围会越小;反之难度值越大,挖矿难度就越小。

难度值调整

比特币系统中,难度值是系统动态调整的,目的是使整个系统平均10分钟出一个块。

为什么调整难度值

随着挖矿设备的进化升级,系统的总算力会越来越强,如果难度值保持不变的话,出块时间会越来越短,一方面是提高了对系统的响应时间和效率的考验,另一个方面是出块时间缩短后在同一时间将会产生多个区块,必然会导致区块链形成多分叉,这样就导致系统的总算力分散到各个分叉链中了,这时系统的安全性大幅度降低,黑客可以集中算力进行分叉攻击等攻击行为。

因此,比特币系统需要调整难度值。

难度值调整规则

目标是:系统平均每10分钟产生一个区块。

调整的周期是:每2016个区块产生后会调整一次(大约2周14天)

调整的计算公式是:

新难度值 = 旧难度值 * (最近2016个区块的真正时间 / 最近2016个区块的预期时间)

最近2016个区块的预期时间,当然是:2016 * 10min。

从上面公式可以得出,最近2016个区块的真正时间越小,说明系统中出块时间更短了(算力更强了),新难度值也就越小,所以挖矿难度就动态的提升了。

但是为了防止难度变化的过快,调整的时候有个4倍的幅度限制,也就是若调整的幅度大于4倍了,就按4倍调整。

Share to:

Author: Eason

Opinions belong to the column author and do not represent PANews.

This content is not investment advice.

Image source: Eason. If there is any infringement, please contact the author for removal.

Follow PANews official accounts, navigate bull and bear markets together
Related Topics
Bitcoin
20 articles
PANews APP
In the past 24 hours, a total of $207 million worth of contracts were liquidated across the entire network, mainly long positions.
PANews Newsflash