8月1日,Ultrain联合创始人&CEO郭睿、联合创始人&CSO廖志宇做客链得得吐槽大会。在接受群友们的车轮战时,有这么一个问题成为了讨论的核心:超脑链使用的随机可信证明机制(R-POS)中,随机数是如何产生的?是否存在真随机?
在密码学中,随机数的概念有着重要的地位,而基于密码学原理的
区块链技术中对随机数的应用也在各项目中屡见不鲜。从本质上来说,
区块链技术的核心,共识机制就是依托各种方式来选出随机的记账人,以构建一个安全和去中心化的记账体系。
以PoW采用的方式来说,所有矿工解一个数学难题,算力高的节点优先解出答案的概率较低算力节点更高。注意,这里是概率更高而已,并不是单纯的对全网所有节点进行算力的比较,低算力节点依然有可能提前算出解,从而获得记账权。这种方式维护了全网中记账权的随机性,让作弊成本变得非常高。
PoS中则是将算力竞赛改为了股权竞赛,依然是通过同样的方式来保证记账权的随机分配。
DPoS之所以饱受诟病的原因也是如此。在DPoS体系中,为了提高性能,通过超级节点的选举将随机的记账权保持在一个数量极小(往往不超过25)的节点范围内,牺牲了去中心化。
那么,在PoW的共识机制中,真的能够做到完全随机吗?根据密码学原理,随机数的随机性检验可以分为三个标准:
统计学伪随机性。统计学伪随机性指的是在给定的随机比特流样本中,1的数量大致等于0的数量,同理,“10”“01”“00”“11”四者数量大致相等。类似的标准被称为统计学随机性。满足这类要求的数字在人类“一眼看上去”是随机的。
密码学安全伪随机性。其定义为,给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分,即“不能通过给定的随机序列的一部分而以显著大于二分之一的概率”。
真随机性。其定义为随机样本不可重现。实际上只要给定边界条件,真随机数并不存在,可是如果产生一个真随机数样本的边界条件十分复杂且难以捕捉,可以认为用这个方法演算出来了真随机数。
相应的,随机数也分为三类:
伪随机数:满足第一个条件的随机数。
密码学安全的伪随机数:同时满足前两个条件的随机数。可以通过密码学安全伪随机数生成器计算得出。
真随机数:同时满足三个条件的随机数。
根据真随机性的概念,如果将产生随机数的边界条件变得难以捕捉,这个过程就会更加随机。
区块链项目中产生随机数的边界条件包括使用上一个区块的哈希值,上一个区块的时间戳等等。但由此也产生了一些问题:这些信息都是写在上一个区块中的,根据区块中的信息产生一个随机的结果来选出下一个区块,存在循环论证的嫌疑,安全性相对较差。
而一般意义上的真随机数发生器往往利用了更加复杂的边界条件来产生随机数。第一个广泛认知上的真随机数发生器是1955年由Rand公司创造的,而在1999年,Intel发布Intel810芯片组时,就配备了硬件随机数发生器,基于IntelRNG的真随机数生成器可以生成满足独立性和分布均匀性的真随机数。
目前大部分芯片厂商都集成了硬件随机数发生器,只要安装相应驱动,了解读取寄存器地址,可以直接调用发生器。Intel810RNG的原理大概是:利用热噪声(是由导体中电子的热震动引起的)放大后,影响一个由电压控制的振荡器,通过另一个高频振荡器来收集数据。
在区块链世界中,通过复杂的边界条件来获得随机数的案例也有不少。今年1月,
加密货币Zcash举行了一个看起来相当惊人的仪式:他们在美国伊利诺伊州和威斯康星州上空的一架小型私人飞机上举行了一个“可信的设置仪式(trusted setup ceremony)”。
这个仪式通过在乌克兰切尔诺贝利核设施中心获得的核废料产生辐射,并利用盖革计数器将放射性脉冲转换成了一个“完全随机”的数字,并将其放在了Zcash的代码里。在仪式上,开发人员通过驾驶飞机,确保了恶意参与者不可能在其过程中破坏代码。
在上面两个案例当中,随机数都是通过一些难以捕捉的边界条件产生的。纯粹依靠算法是否能够生成真随机数呢?一般认为,由于计算机算法均具备确定的特性,所以真随机数无法由算法来生成。
版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。