Nonce 是矿工用来验证新区块的一个任意数字。它是一个随机或伪随机数。
在 PoW 共识下,nonce 是区块头的一部分。而区块头包含以下内容:
挖矿程序生成一个随机数,将其附加到当前区块头的哈希值,然后重新哈希该值,并将其与目标值(一个 256 位的数字,即区块头的哈希值)进行比较。这个过程重复进行,直到得到的哈希值满足要求(小于或等于目标值)。然后,矿工被认为找到了解决方案,并被授予区块。
比特币区块中的 nonce 是一个 32 位(4 字节)字段。因此,它提供了 2³²(=4,294,967,296)位的搜索空间。
然而,由于搜索空间巨大,几乎不可能在没有计算的情况下“猜测”。这种迭代计算消耗时间和资源,构成了所谓的 "工作证明(PoW)" 中的 "工作"。这个计算过程也被称为 "挖矿"。
区块难度在整个网络中保持相同。理论上,所有矿工都有相同的机会找出正确的哈希值。加密货币网络通常会设定一个目标区块数量,希望在特定时间段内处理,并根据需要调整难度,以确保实现这个目标。例如,比特币的难度大约每两周固定一次。如果处理的区块数量未达到此目标,则难度将降低,难度降低的幅度取决于处理时间超出限制的程度。