难度目标是一个只有4个字节的字段,通过转化得到。它可以理解为一个与目标值相等的字段。目标值是一个256位的字符串,即有2^256种可能的取值。调整难度目标就是调整目标值在整个输出空间的比例。
举个例子来说明:挖矿就像是射击,所有射出去的子弹都会落在一个大的靶子上。难度目标就是在这个靶子上圈出一个范围,范围越小,命中的难度就越大。调整难度目标就是调整这个范围在整个靶子上的比例。
当挖矿算力增大时,单位时间内的射击次数就会增多,需要更短的时间来命中目标范围。反之,当挖矿算力减小时,需要更长的时间来命中目标范围。为了保持平均出块时间在10分钟,比特币系统会调整难度目标。
比特币系统每过2016个区块(约14天时间),会自动调整一次难度目标。如果上一个调整周期内的平均出块时间超过10分钟,说明挖矿难度偏高,需要降低挖矿难度,增大难度目标。反之,如果平均出块时间小于10分钟,说明挖矿难度偏低,需要缩小难度目标。
比特币系统设定了难度目标上调和下调的范围限制为4倍。如果上一个调整周期内的2016个区块在7天内全部挖出,通过调整难度目标可以将其缩小一倍,以保持平均出块时间在10分钟左右。但如果算力暴涨,上一个调整周期内的2016个区块只用1天全部挖出,那么难度目标最多只能调整为原来的四分之一。
综上所述,比特币通过调整难度目标来控制挖矿难度,以保持平均出块时间在10分钟左右。调整方式是每2016个区块自动调整一次,根据上一个调整周期内的平均出块时间来判断是否需要调整难度目标。难度目标的调整范围限制为4倍。与比特币不同,比特币现金每个区块都会进行难度调整,具有更及时的调整性能。大家对于哪种调整方式更合理,可能有不同的观点。