区块链 - 工作证明

由于所有事务都带有时间戳,我们需要在对等网络上实现分布式时间戳服务器.这需要一些额外的实现,这就是我现在要描述的工作证明.对于每个块,我们现在再添加一个名为 Nonce 的项目,如下图所示 :

工作证明

Nonce是一个数字,使得块的哈希符合某个标准.这个标准可能是生成的散列必须使其前四位数为零.

因此,生成的散列看起来像000010101010xxx.通常,矿工以Nonce值0开始并继续增加它,直到生成的哈希符合指定的标准.

请注意,哈希生成是随机工作的,并且超出了您的控制范围 - 也就是说你无法强制哈希函数生成某个哈希值.因此,可能需要多次迭代,直到生成具有四个前导零的所需散列.在比特币系统中生成块的预期时间是10分钟.一旦矿工成功挖掘了该区块,他就会在系统中释放它,使其成为链中的最后一个区块.

请注意,有多个矿工竞争生成合法区块.比特币系统通过给他一些比特币奖励第一个成功的矿工.通常,具有更多计算能力的矿工可能是早期的赢家.这可能会导致具有巨大处理能力的人对整个系统的攻击.我将描述攻击以及在本教程结束时如何减轻这些攻击.