随机事件在我们身边无处不在。比如,运气、概率和命运就与随机性密不可分。人类不理解或无法预测的一切事物往往被归类为随机事件。物理世界中也有许多随机事件,比如云的运动、粒子和波的轨迹等。然而,尽管它是那么的令人熟悉,人类却很难将周围的随机性转化为计算机可以计算的东西。
当我们谈论计算机系统中的随机性时,我们指的是伪随机性,这是一种对现实世界随机性的模拟产物。不过,这两种随机性很难区分。我们在这里要讨论的是非常强大的模拟性随机(伪随机)。
随机性在隐私技术和密码学中发挥着重要作用。值得惊叹的是通过一个随机值与一条信息就能提供一种简单而强大的加密方案。比如对称密钥加密技术,两方进行交流时需要事先共享一个保密密钥,但即使是进行最简单的交流也需要确保共享密钥是随机的。如果此共享密钥不随机,则任何人都可以通过已知的密码算法与信息内容窃取保密密钥,加密也就失去了意义。
随机性的作用:
利用随机性可以在两个人之间构建一个安全的通信渠道,也可以用来确认通信双方的身份。此外,如果同时有很多人想通过有限带宽的通信渠道彼此通信,则可以使用随机性来公平地确定消息传递的顺序。随机性也可以用来帮助一群人或计算机达成一致。随机共识协议就是这样一个例子。这篇文章将探讨随机性在区块链中的作用。
区块链是帮助多方在全球层面上就某种程度的更新达成共识的完美例子。更新通常按照回合的方式完成,每个回合是一个周期性的离散时间段。
一般限制共识的的因素有两个:吞吐量(在互联网上的特定时间段内可以发送的消息数量上限)以及延迟(消息通过互联网发送所需的时间)。任何区块链共识协议的目标都是克服上述限制因素达成共识。在公链中,数千个节点参与维护区块链,如果每个节点都需要向其他所有节点发送消息并等待来自所有其他节点的响应,吞吐量与延迟将会让达成共识的成本大幅增加。成本高昂是因为一个回合中传递的信息数量太过庞大,因此为了达成共识而优化网络沟通方案的一个方式就是削减信息的数量。
如果区块链由于随机性函数停止输出而完全停止,在社会层面上将需要巨大的协调成本来重新启动区块链。社群需要花费大量的时间通过外部社交媒体平台就区块链的形式达成一致,这样做的成本与解决DAO黑客的成本相当。这种巨额成本也会动摇社区对区块链协议安全性的信心。
另一方面,只要偏差很小并且存在修正偏差的机制,仅仅几轮的轻微偏差带给区块链安全性的影响也会很小。这是因为在每一轮公共区块链协议中给予验证者的协议内奖励相对较小。但是由于每轮或每个时期(一组轮次)都会选择新的小组委员,因此在随机性函数中总会存在某个显著的偏差,让验证者可以钻空子赚钱并导致区块链协议的安全性降低。此外,主打随机性的彩票游戏需要确保随机源不被操纵,因为即使一点偏差也会改变彩票的赢家。这是因为篡改彩票结果的效果是巨大的,可以获得了大量的即时奖励。因此,这样的游戏适合仅保证无篡改输出的随机性函数,即使这意味着随机函数的输出有时会停止。