区块链 - 工作量证明


由于所有交易都带有时间戳,因此我们需要在点对点网络上实现分布式时间戳服务器。这需要一些额外的实现,这就是我现在将描述的工作量证明。对于每个块,我们现在添加一个名为Nonce的项目,如下图所示 -

工作量证明

Nonce 是一个数字,使得块的哈希满足特定的标准。该标准可以是生成的哈希值的前四位数字必须为零。

因此,生成的哈希值将类似于 000010101010xxx。一般来说,矿工从 Nonce 值 0 开始,并不断增加它,直到生成的哈希满足指定的标准。

请注意,哈希生成是随机的,并且超出您的控制范围 - 也就是说,您不能强制哈希函数生成特定的哈希。因此,可能需要多次迭代才能生成具有四个前导零的所需哈希值。比特币系统生成一个区块的预计时间是10分钟。一旦矿工成功开采该区块,他就会将其释放到系统中,使其成为链中的最后一个区块。

请注意,有多个矿工竞争生成合法区块。比特币系统通过给予第一个成功的矿工一定的比特币来奖励他。一般来说,拥有更多算力的矿工可能是早期的赢家。这可能会导致拥有巨大处理能力的人对整个系统进行攻击。我将在本教程的最后描述这些攻击以及如何缓解这些攻击。