请选择 进入手机版 | 继续访问电脑版
  玉林社区   吃喝玩乐购   洞察:区块链为何需要随机数
返回列表
查看: 306|回复: 0

洞察:区块链为何需要随机数

[复制链接]

3万

主题

3万

帖子

12万

积分

论坛元老

Rank: 8Rank: 8

积分
129194
发表于 2021-7-17 08:19:19 | 显示全部楼层 |阅读模式

马上注册玉林红豆网会员,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

????点击“蓝字”关注我们另一方面,[url=http:///www.szsuhuang.com/?id=10]BreadWallet下载介绍 - 新手指南 - BreadWallet[/url]也给大家带来切实的好处,倍感受用,实属行业的典范。[align=center]

                               
登录/注册后可看大图
[/align]

随机数无处不在

我们生活的环境充满了随机性。一直以来,运气,概率和命运这些概念都与随机性紧紧联系在一起。所有人类无法理解或无法预测的事物往往都被归类为随机事物。从生理上来说,我们也是沉浸在了随机海洋中。从云的运动到粒子和波浪的行为,随机性简直无处不在。

然而,尽管人类接触到了各种各样的随机事物,对随机性很熟悉,但依然难以将它转化为计算机可以使用的东西。当我们谈论计算机系统中的随机性时,我们真正指的是伪随机性,即尽可能模拟出现实世界应有的随机性,使之近乎于“真正的随机性”。以密码学安全伪随机数生成器为例,这是一个非常强大的随机性模拟。

随机数在区块链中的作用

随机数在隐私技术和密码学中发挥着重要作用。令人惊艳的是,通过生成一个随机数来对一条消息进行异或运算(XOR),提供了一种简单但十分强大的加密方案。即使是双方之间最简单的私人通信形式(即双方提前共享密钥的对称加密方案)也要求共享的密钥是随机的。如果此共享密钥不是随机的,则加密就毫无用处,因为任何知道密钥生成算法的人都可以确定密钥然后解密该条消息。

随机数的重要性不仅体现在安全通信渠道的建立上,还体现在确认通信对象上。如果多个人试图通过有限带宽的频道来互相通信,则可以利用随机数来确定频道携带消息的合理顺序。

随机数能够有效帮助团体或计算机达成一致协议或共识。随机共识协议就是这样一个例子。本文将探讨随机数在区块链中的作用。

计算机中的随机数

在当前的编程语言中,C、R、Python、Ruby、PHP等都采用了梅森旋转算法(MersenneTwister)作为默认的伪随机数生成方法,它由松本真和西村拓士在1997年发明。

梅森旋转算法把寄存器当时或者之前的状态作为种子来源,通过线性反馈移位寄存器对输入进行移位旋转,周期为一个梅森素数。该算法产生的伪随机数质量好、产生速度快。

区块链技术中的随机数

传统的伪随机数生成算法或多或少与单台机器的物理状态或运算状态相关,这在区块链上是行不通的。区块链是一个分布式的系统,它要求各个节点的运算结果是可验证、可共识的。

区块链需要从零开始设计崭新的随机数法则,从而实现不同节点上的智能合约可以使用相同的随机数。

区块链随机数方案1

让可信的第三方为合约提供随机数

在以太坊上,Oraclize是为链上节点提供随机数的第三方。Oraclize是一个预言机,独立于区块链系统之外,智能合约发送请求给Oraclize,当Oraclize监听到链上相关请求后,生成随机数并将结果返回区块链。

区块链随机数方案2

用区块链的链上信息作种子产生随机数

不同于传统伪随机数生成算法中种子的私密性,区块链上的种子几乎是“透明”的:它是链上的区块信息,所有节点上的智能合约都能够取到,那么从原理上讲,黑客用于攻击的恶意合约同样可以获得这些数值。

不过,因为缺乏成熟的随机数提供方,以及对中心化随机数的警惕、对链上自治的追求,通过智能合约计算随机数依然是EOS上众多DApps首选的方法,这也是DApps深陷黑客危机的原因所在。

区块链随机数方案3

不同参与者合作生成随机数

RANDAO采用的即是这种方式,它以智能合约的形式封装了伪随机数生成算法和对应的业务逻辑,为以太坊提供随机数服务,任何人都可以参与生成RANDAO随机数。

RANDAOCOMMITREVEAL方案

第1阶段:收集有效SHA3(s)

在第1阶段时间窗口内,向合约C发送m个以太的保证金,并附上随意数字s的SHA3(s)。

第2阶段:收集有效s

在第2阶段时间窗口内,向合约C发送之前的数字s。合约C检查数字s合格,保存到随机生成的seeds中。

第3阶段:计算

所有si收集完成后,以f(s1,s2,…,sn)作为最终随机数。

VRF可验证随机函数

一个理想的哈希函数,其值域应该是离散的、均匀分布的,给定不同的输入值,其输出值应该没有规律,随机的洒落、分布在值域区间内。

resultSHA256(secret,info)

那么要得到结果result,仅仅拥有info是不够的,必须要知道secret才能计算出来,或者说我们已经拥有了结果result和info,但是必须知道secret才能验证info和result是否是对应匹配的,这就是带密钥的哈希函数。

具体的操作流程

1、证明者生成一对密钥,PK、SK;

2、证明者计算resultVRF_Hash(SK,info);

3、证明者计算proofVRF_Proof(SK,info);

4、证明者把result和proof递交给验证者;

5、验证者计算resultVRF_P2H(proof)是否成立,若成立,继续下面的步骤,否则中止;

6、证明者把PK,info递交给验证者;

7、验证者计算TRUEFalseVRF_Verify(PK,info,proof),True表示验证通过,False表示验证未通过。

VRF用于共识算法

Algorand共识过程利用了随机抽签,通过VRF在节点的本地算出来一个可验证的确定的随机数。

会会运行分布式随机信标(DistributedRandomnessBeacon,DRB)协议得到随机数种子。通过这个随机数种子,加上每个节点自己的私钥,每个节点通过运行可验证随机函数(VRF)就可以算出自己的排名。

采用基于BLS的门限签名,只需要n个人中tt个人提交有效的签名就可以生成随机数,协议就可以运行下去。

VRF总结

总之,VRF可验证随机函数可确保信息的安全传输和可验证。

首先,随机数不露,验证人只知道有随机数,但在私钥持有人没有广播之前不会知道随机数是什么;

其次,随机数可验证,私钥持有人无法伪造随机数,一旦随机数确定,除了私钥持有人之外,其他任何人事先不知道,但是该随机数可验证,即知道公钥的任何人都知道私钥持有者生成的随机数是否合规。

1、带有承诺的抛硬币协议CoinTossing协议流程如下:

2、带门限机制的CoinTossing抛硬币协议流程如下:

3、使用经济惩罚的CoinTossing抛硬币协议流程如下:

Harmony使用VRFVDF

Harmony的分布式随机数产生协议巧妙地结合了VRF(可验证随机函数)和VDF(可验证延迟函数)的密码学特性。

在这一协议里,所有验证者分别利用VRF计算自己的随机数,并发给者。者收集一定数量的VRF随机数结果,将他们合并之后,把结果进行VDF计算,最后产生的结果作为最终的随机数。

随机数是密码学和区块链的重要部分。不良的随机数方案会通过以下方式破坏区块链的安全性:i)停止区块链协议;ii)导致中心化。因此,在理解区块链的安全性时,探究随机性在该区块链协议中的角色乃是重中之重!

你“在看”吗?????
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

收藏:1 | 帖子:7万



侵权举报:本页面所涉内容均为用户发表并上传,岭南都会网仅提供存储服务,岭南都会网不承担相应的法律责任;如存在侵权问题,请权利人与岭南都会网联系删除!