目的
本文更深入地回顾了什么是随机数,以及它们如何帮助区块链在防止重复区块的同时维护秩序
做出的假设
概括
在大多数区块链中,有两种类型的随机数。一个被称为“帐户随机数”,而另一个是“共识证明”-帐户随机数的功能是与钱包地址相关的交易队列。添加的第一个区块的帐户编号为1,第二个区块的帐户编号为2,不断地往上递增。通过维护帐户随机数的记录,任何与该链交互的系统都将知道下一个帐户随机数是什么,以保持该顺序。
共识随机数的证明是为了从当前区块创建所需的“下一个”哈希而计算的数字。确定帐户随机数后,记录“上一个”哈希,并写入事务中;一个区块需要一个“下一个”哈希,这样链才能继续。如果“下一个”哈希必须以特定的序列开头,例如0x0000,那么实现这一点的唯一方法是向区块中添加一个数字,直到生成的“下一个”哈希满足所需的标准。这个生成的数字是共识随机数的证明。当验证器使用他们的软件处理区块链事务时,他们经常要进行必要的计算,以确定区块的随机数,以便将其添加到链中。一旦实现正确随机数的数学计算完成,找到下一个区块的验证器通常会获得区块链的加密货币作为奖励。
随机数为交易提供了额外的安全性,因为没有人可以为自己制作交易的精确副本。这被称为重放攻击。在重放攻击中,恶意行为者将复制一个已尝试并批准的交易,但更改其中的一部分以有利于自己。因为必须计算一致随机数的证明才能将区块添加到链中,所以必须先编写原始文件。一旦写入,帐户随机数确保交易是独一无二的,以后不能复制重新发送。账户随机数还可以防止重复或重叠的交易,也就是所谓的“重复消费”,即用户可能会试图多次重新发送交易,从而花费超过他们钱包里的钱。由于每笔交易都有一个唯一的账户随机数,当区块链多次尝试看到相同的随机数时,它将只接受一个,拒绝其余的交易。每个事务都通过帐户随机数的唯一性和一致随机数的证明来确保安全,以签署哈希和保护区块免受重放攻击。