区块链 - 工作量证明
由于所有交易都带有时间戳,我们需要在对等网络上实现分布式时间戳服务器。这需要一些额外的实现,这就是我现在要描述的工作量证明。对于每个区块,我们现在再添加一个名为 Nonce 的项目,如下图所示 −
Nonce 是一个数字,使得区块的哈希值满足某个标准。该标准可能是生成的哈希值的前四位数字必须为零。
因此,生成的哈希值看起来像 000010101010xxx。通常,矿工从 Nonce 值 0 开始,并不断增加它,直到生成的哈希满足指定的标准。
请注意,哈希生成是随机的,并且不受您的控制 - 也就是说,您无法强制哈希函数生成某个哈希。因此,可能需要多次迭代才能生成具有四个前导零的所需哈希。在比特币系统中生成一个区块的预期时间为 10 分钟。一旦矿工成功挖掘出该区块,他就会将其发布到系统中,使其成为链中的最后一个区块。
请注意,有多个矿工在竞争生成合法区块。比特币系统会奖励第一个成功的矿工一定的比特币。一般来说,拥有更多计算能力的矿工可能是早期的赢家。这可能会导致那些拥有巨大处理能力的人对整个系统发起攻击。我将在本教程的最后描述这些攻击以及如何缓解这些攻击。