
调整边界由高度决定
解释比特币挖矿难度时,可以先固定网络和软件版本。本文读取Bitcoin Core二十八版主网参数及计算代码:目标时间跨度为十四天,目标出块间隔为十分钟,两者相除得到二千零一十六个区块的调整间隔。这些是协议参数,不表示每一个区块都准时在十分钟后出现。
计算下一块目标时,代码先检查下一块高度是否处在调整边界。主网在非边界位置沿用上一块的目标编码,而不是日历每到隔周某个时刻就运行一次调整。同一源码还包含测试网络的最低难度和其他例外;主网参数没有启用这些分支,不能把测试规则混进本文的计算。
首尾两个区块决定所取时间差
若下一块高度记为H,并且它处在调整边界,上一块高度就是H减一。代码从上一块向前找到H减二千零一十六的区块,用上一块时间戳减去这个首块时间戳。这里包含二千零一十六个区块位置,两个端点之间却只有二千零一十五段相邻间隔,阅读程序时应保留这个区别。
程序取得的是这些区块记录的时间差,不是资料员访问网页时的本地时钟,也不是下一块尚未形成的时间戳。复核一份调整说明时,应同时保存首尾高度及时间来源;如果只给出一项平均耗时,却没有说明取了哪些端点,就无法确认它是否按同一实现计算。

更快出块对应更小的目标阈值
在应用倍率之前,代码把实际时间差限制在目标跨度的四分之一至四倍之间,再以旧目标乘上受限时间差、除以目标时间跨度。随后还要检查主网允许的最大目标,并转换回紧凑编码。因此,这是一套含边界和整数表示的计算,不宜将简化比例当成精确的区块头字段。
用纯虚构例子说明方向:假设首尾时间差为七天,且暂不讨论表示精度,倍率就是七除以十四,目标约缩为原来的一半。允许的哈希阈值变小,达标更难,难度方向是上升。若时间差为二十八天,目标倍率则约为二;仍须经过最大目标限制,不能直接声称任何情况下都会完整放宽两倍。
同为十四天也可能属于另一种统计
Cambridge的CBECI方法页同样出现十四天,但它用于对模型中的盈利阈值作移动平均,以平滑硬件组合调整面对的短期波动。这是其用电估计方法中的处理,与Bitcoin Core按区块高度重新计算目标不是同一流程。不能把模型采用十四天平均,写成它替网络执行了难度调整。
因此,记录中应分别标清协议目标跨度、实际首尾耗时,以及研究图表自己的平滑窗口。源码说明的是主网规则如何计算,模型说明的是研究者怎样处理估计输入;两者都没有给个人矿机安排固定产量。本文没有运行节点、预测下一轮数值或计算收益,七天与二十八天只是用于检查倍率方向的教学条件。