术语表 /挖矿与共识
挖矿难度
又称难度、网络难度、Mining difficulty。
- 挖矿难度是什么?
- 挖矿难度是比特币网络每隔2,016个区块调整一次的参数,无论算力多高或多低,都使区块大约每十分钟出现一个。
难度是一个单一的数字,用来表示如今找到一个区块比中本聪在2009年1月时难多少。它每隔2,016个区块(大约两周)根据前一个2,016个区块实际耗费的时间重新计算一次,且在任一方向上的调整幅度最多为四倍。正因如此,十分钟出块的节奏才能经受住挖矿算力一百万亿倍的增长。
运作方式
难度是一个比值,协议仅凭时间戳计算它,整个过程不涉及任何人工干预。
其背后是目标值:一个256位的数字,区块头哈希必须低于它。目标值以一个名为 nBits 的紧凑四字节字段存储在区块头中。难度的定义是难度1的目标值除以当前目标值,因此难度为126万亿意味着有效区块头的稀有程度是网络第一周的126万亿倍。节点实际上从不检查难度,它们只用区块头哈希对照目标值进行检查。难度之所以存在,是因为比值便于阅读,而256位的阈值则不然。
难度调整发生在每个为2,016的倍数的区块高度。节点获取该窗口实际耗费的时间,与预期的20,160分钟相比较,并按此比值缩放目标值,同时设有限制:单次调整最多只能使目标值变容易四倍或变困难四倍。计算中有一个著名的差一错误:时间跨度是在窗口的第一个区块与最后一个区块之间测量的,涵盖2,015个间隔而不是2,016个,因此网络实际的目标是每个区块约10.0049分钟。纠正它需要为一个舍入误差进行硬分叉,所以它被保留了下来。
历史表明这一机制在两个方向上都能发挥作用。难度在1上停留了将近一年,直到2009年12月30日在区块32,256进行第一次难度调整,升至约1.18。此后它已攀升至120万亿以上。有记录以来最大的降幅出现在2021年7月3日,当时中国驱逐其挖矿行业,使难度一次性下降了27.94%,从约19.93万亿降至14.36万亿。
购买比特币时为何重要
难度是您的提币能在几分钟而非几小时内确认的原因,而滞后的难度则是它有时做不到的原因。
这一机制只会事后修正。如果有很大一部分算力关闭,区块仍按旧难度产生,每个区块耗时超过十分钟,直到下一次难度调整,最长可达两周之后。在这几周里,确认变慢,内存池清空的速度慢于填充的速度,手续费率上升,因为同样的区块空间被拍卖的频率变低了。2021年7月从交易所提币的人对此有直接感受。该时段内的区块平均出块时间接近十四分钟。
相反的情形更为平静,但更为常见。当新的矿机群上线时,区块出块快于十分钟,直到难度跟上,因此确认在短时间内比预定节奏所显示的更便宜、更快。
有两点关于难度不起作用的情况值得明确说明。它对减半的时间表没有影响,因为减半按区块计数而非按时间计数;它也不是价格信号。难度上升,是因为矿工购买了几个月前有利可图的机器。把它当作预测来解读,就像看后视镜一样。
2021年7月3日的难度调整
2021年7月3日的难度调整是这一机制最清晰的例证,因为冲击巨大,而修正是自动完成的。
中国的打击行动在2021年中数周内使全球很大一部分矿机离线。机器被装入运往得克萨斯州、哈萨克斯坦和巴拉圭的集装箱,在运输途中它们不产生任何哈希。网络并没有陷入停滞,也没有向任何人求助。它只是出块变慢了:27.94%的降幅意味着前一个窗口的平均出块时间约为13.9分钟,而不是十分钟。在难度调整时,难度降至14.36万亿,十分钟的节奏在数小时内恢复,而当年夏季连续四次下调合计使该数字下降了约45%。随后数月里,反方向的调整抹平了全部降幅,而无人决定要这样做。
挖矿难度 vs 难度调整
挖矿难度是那个数字,难度调整是改变它的事件。难度是一个在整整2,016个区块的周期内保持不变的值,因此该周期内的每个区块难度完全相同。难度调整是在周期边界发生的重新计算,也是矿工关注的重点,因为那是每台机器收入发生变化的时刻。说难度在某个星期二上升,是“那个星期二发生了一次难度调整”的简略说法。
挖矿难度 vs 目标阈值
挖矿难度是为方便人类而设,目标值才是软件强制执行的标准。目标值是区块哈希必须低于的实际256位上限,出现在每个区块头中,压缩在 nBits 字段里。难度由它通过除法得出,并且不出现在区块的任何位置。当新闻标题说难度上升了5%时,其底层变化是目标值缩小了约5%,全球每位矿工每个区块悄然需要多尝试约5%。