干货|区块链中的随机数
我们生活的环境充满了随机性。一直以来,运气,概率和命运这些概念都与随机性紧紧联系在一起。所有人类无法理解或无法预测的事物往往都被归类为随机事物。从生理上来说,我们也是沉浸在了随机海洋中。从云的运动到粒子和波浪的行为,随机性简直无处不在。然而,尽管人类接触到了各种各样的随机事物,对随机性很熟悉,但依然难以将它转化为计算机可以使用的东西。
当然,为了公平选举出小组委员会的成员,保证没有人会提前知道成员的身份,算法必须能够融入一些公平、无偏倚的(unbiasable)随机数源。一旦该组验证者在下一个区块上达成了一致,那个区块就会被广播给网络中的每一个人。在PoS协议中用于小组委员会选举的理想随机数源必须是不可支配的(unbiasable),即没有人可以随意改变随机种子(seed)。
基于我们曾在替代性共识协议的元分析中剖析的不同区块链协议的使用案例,下面我们会从技术角度详细介绍各种随机数的生成机制。TendermintTendermint是使用一种确定的循环协议方案来选出提议者的;该协议不具备随机性。提议者是根据投票权和验证者被选次数的堆排序算法选出的。攻击者只能通过添加或删除权益来干预协议,但这种干预不能立即生效,因为验证者在系统中移除或者添加权益所需的时间很长。
一旦诚实的验证者进入到第r轮,随机种子就会被揭示。虽然从诚实的验证者进入到新一轮正式开始之间的时间差很小,但这个时间差足以让具有大量计算资源的攻击者识别出提议者并对其进行DoS攻击。这就是为什么Dfinity只能应对温和的攻击者而无法应对瞬时瘫痪的状况。
领取专属 10元无门槛券
私享最新 技术干货