跳转到正文
buybitcoinsmart

术语表 /挖矿与共识

难度调整

又称难度重新调整。

难度调整是什么?
难度调整是一项规则,每经过2,016个区块便重新设定挖矿的难度,随着算力的变化,使区块之间的平均间隔时间重新回到十分钟左右。

比特币没有调度器,因此要让发行节奏保持不变,唯一的办法是在矿工涌入时提高搜索难度,在矿工离开时降低难度。重新计算每隔2,016个区块进行一次,目标是1,209,600秒的实际耗时,单次调整幅度最多为四倍。这就是确认时间能够经受挖矿热潮或暴跌的原因。

运作方式

难度调整是算术,不是决策,每个节点都独立执行。

在每个2,016个区块的窗口结束时,节点读取两个时间戳:窗口内第一个区块的时间戳和最后一个区块的时间戳。节点用实际耗时的秒数除以1,209,600(两周的秒数),再用这一比值乘以旧的目标值。出块较快时,比值小于一,目标值随之降低,下一个窗口的难度升高。出块较慢时,比值大于一,目标值随之升高,下一个窗口的难度降低。结果在两端都设有限幅:实际耗时按不少于302,400秒且不多于4,838,400秒计算,因此单次难度调整在任一方向上的变动都不会超过四倍。

这一计算中有一个著名的差一错误(off-by-one)。一个2,016个区块的窗口之间只有2,015个间隔,而代码在测量时间戳时没有对此加以修正。其影响很小,但长期存在:网络的目标是每9.9950分钟出一个区块,而不是每10分钟,因此比特币的时钟比简单按十分钟计算的时间表略快。这个问题从未被修复,因为修复它需要一次硬分叉,却没有实质性的好处。

时间戳是最薄弱的输入,相关规则也有意设得宽松。区块的时间戳只需大于前十一个区块时间戳的中位数,并且比接收节点自身的时钟快不超过两小时。因此,矿工有少量空间可以左右一次难度调整,这就是理论上的时间扭曲攻击(time warp attack)的基础,也是收紧时间戳规则的提议不断被重新提出的原因。

首次难度调整发生在2009年12月30日,位于区块32,256,难度从1升至1.18。此后的一切,都是同一段简短算术大约每两周执行一次。

购买比特币时为何重要

难度调整使比特币提币的等待时间可以预知,也是应当对挖矿类产品保持怀疑的原因。

在两次调整之间,难度保持不变,而算力可以自由变动,因此出块间隔会出现偏移。如果网络中有很大一部分算力关闭,出块就会变慢,原本半小时内完成的提币会明显拖长,直到下一次调整恢复节奏。这并不是交易所在拖延您,而是网络运行时的算力低于当前难度所对应的水平,并会在2,016个区块内自行纠正。

它也限制了单一政府能造成的破坏。中国在2021年禁止挖矿时,超过一半的网络算力在数周内下线,协议无需任何会议便消化了这一冲击:难度下降,出块速度恢复,矿机被运往哈萨克斯坦、美国等地。本站的国家指南展示了同一故事的政治一面:禁令改变了谁来挖矿以及您可以在哪里合法购买,但从未改变区块是否继续产生。

最后,对任何宣称固定挖矿收益的产品都应保持怀疑。在几乎所有跨越数年的时期里,难度都呈上升趋势,这意味着即使其他条件不变,某台矿机所获得的比特币也会随时间减少。承诺每日稳定收益的云挖矿合约,承诺的是协议本身在对抗的东西。

2021年7月的难度调整,有记录以来降幅最大

区块689,472于2021年7月3日被挖出,带来了比特币历史上最大的一次下调:难度单次下降27.94%。

原因是政治性的,而非技术性的。中国的挖矿禁令使七日平均算力从6月中旬的约136 EH/s 降至约85 EH/s,降幅约为35%。由于难度是按更大的网络设定的,该窗口内的出块明显落后于预定进度。这次调整将难度要求降低了近28%,出块时间迅速回到十分钟左右,发行仍沿同一曲线继续。在此期间连续四次负向调整,累计使难度降低约45%,而网络从未暂停。

这一事件是支持该机制的最有力的单一论据。没有委员会投票,没有发布紧急补丁,用户也无需做任何事。

难度调整 vs 难度

难度是一个数值,难度调整是改变这个数值的事件。难度是一个简单的比值,表示当前搜索比规则允许的最容易搜索难多少,它不会自行漂移。难度调整是为接下来的2,016个区块设定新数值的重新计算。标注为"difficulty"(难度)的图表看起来像阶梯,正是出于这个原因:数值在一个周期内保持不变,只在难度调整时才发生阶跃。

难度调整 vs 减半

难度调整改变的是找到一个区块的难易程度,减半改变的是找到一个区块的报酬。两者按各自的时钟运行,分别是2,016个区块和210,000个区块,彼此从不协调。减半会使矿工收入一夜之间减少,随后出现的任何停机会在几周后体现为难度降低,但这两条规则在代码中互不相见。把两者混为一谈,就产生了"difficulty halving"(难度减半)这一说法,而这样的事件并不存在。

请勿混淆

相关比特币计算器

常见问题

比特币挖矿难度多久调整一次?

每2,016个区块调整一次。区块按计划出块时约为两周,未按计划出块时则更长。新的难度值自下一个周期的第一个区块起生效,并保持固定,直至下一次难度重新调整。

难度会下降吗?

会。只要前2,016个区块的出块用时超过两周,难度就会下降,这种情况出现在矿工关停矿机时。有记录以来的最大降幅为27.94%,发生在2021年7月3日,当时中国禁止了挖矿。

难度调整会改变我的交易确认速度吗?

会间接产生影响。难度决定区块的出块节奏,因此如果算力在周期中途下降,在下一次难度重新调整之前,每一次确认都会耗时更长。您支付的手续费决定交易进入哪个区块,而难度决定该区块何时出现。

接着阅读

相关术语

挖矿与共识中的更多术语

阅读本页英文版