区块链 - 工作量证明



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

Proof of Work

随机数(Nonce)是一个数字,使得区块的哈希值满足某个特定条件。这个条件可能是生成的哈希值的前四位必须为零。

因此,生成的哈希值将类似于 000010101010xxx。通常,矿工从随机数(Nonce)值为 0 开始,并不断递增它,直到生成的哈希值满足指定的条件。

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

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

广告

© . All rights reserved.