请选择 进入手机版 | 继续访问电脑版
链链财经 位置 区块链 项目 决定公链是否可信的随机数,Wanchain 究竟是怎样生成的?

决定公链是否可信的随机数,Wanchain 究竟是怎样生成的?

2019-5-6 10:46| 发布者: 链链财经| 查看: 186| 评论: 0|来自: 链闻研究院

摘要: 在上一篇解读文章《一文读懂万维链 PoS 星系共识架构特点和运转流程》中,我们介绍了星系共识的整体框架和流程。在共识过程中,节点会组建成两大星群 —— RNP 星群和 EL 星群,前者负责随机数的生成,后者负责打包 ...


在上一篇解读文章《一文读懂万维链 PoS 星系共识架构特点和运转流程》中,我们介绍了星系共识的整体框架和流程。在共识过程中,节点会组建成两大星群 —— RNP 星群和 EL 星群,前者负责随机数的生成,后者负责打包交易提出区块。本文将深度介绍星系共识的随机数生成算法以及其所具有的优势和对共识协议运行的重要作用。


一、随机数对于区块链系统的重要作用

在正式谈随机数的作用之前,我们需要了解一个概念,那就是「熵」(entropy)。熵对于物理学领域的朋友一定不会陌生,它是体系混乱程度的度量。在 1948 年,香农(Claude Elwood Shannon)提出了信息熵的概念,去描述信源的不确信度。简而言之,熵就是不确定性的度量。举一个简单的例子:「北京明天的天气状况」,可能是晴天,也可能是阴天或者下雨,结果是不确定的,因此熵为正数;「地球明天要毁灭」,我们知道地球明天不会毁灭,这是确定的结果,因此熵为零。

那么熵和区块链系统有何关系呢?可以说,熵对于区块链系统是至关重要的,是整个系统运行的安全保障。以比特币系统为例,它采取 PoW 作为共识算法,矿工进行大量哈希计算去争夺出块权,任何高度区块的出块者身份都无法提前预测,这就是熵在比特币系统中的体现。试想如果熵为 0,即每个区块的出块者都是事先确定的或者人为可控,那么必然会出现合谋、分叉等攻击。因此任何区块链系统都需要一种安全有效的方式为系统引入熵。基于 PoW 共识的区块链系统由于挖矿的随机性,以天然的方式为系统引入了熵,然而对于 PoS 和 DPoS 共识的区块链系统,就需要单独设计一种方式去引入熵,那就是随机数生成算法。可以说随机数生成算法是设计共识机制的主要挑战之一,也是衡量共识机制优劣的重要标准之一。


二、随机数生成算法优劣的衡量标准

既然随机数生成算法这么重要,那么一个好的随机数生成算法应该是什么样子呢?从安全和实用角度而言,它应当满足以下六大性质:

1、去中心化(Distributed):随机数的生成过程要是去中心化的,不能依赖或者借助可信第三方完成;

2、不可预测(Unpredictable):根据历史产生的随机数或其他信息无法预测未来的随机数,这是「随机」的基本要求;

3、无偏性(Unbiased):任何人都无法通过计算能力或者后发优势去针对性左右随机数的生成结果;

4、均匀分布(Uniformity):输出的随机数在其值域内是均匀分布的;

5、保证输出(Guaranteed Output Delivery):随机数生成算法的参与者无法通过违背算法的方式使得无法输出随机数,即必然会有随机数输出;

6、公开可验证(Publicly Verifiable):没参与随机数生成的节点可以以后验的方式,监督协议的执行,验证随机数是可信和无偏的。

以上六大性质对于随机数生成算法至关重要,违背其中任意一条都可能会导致严重的安全漏洞。据区块链安全公司 PeckShield 披露,EOS 上有超过 8 个竞猜项目遭受黑客攻击并获利几百万美元,严重威胁到了 EOS 正常生态秩序,而大部分攻击成功的原因都与随机数生成漏洞有关。我们以 EOS.WIN 项目为例,剖析其随机数算法漏洞根源。

EOS.WIN 支持的一个游戏是猜数字,即用户输入某个数字并压大或者压小,然后系统随机生成一个数字,如果用户压对大小,则视为中奖并获取收益。显然如果能够控制系统随机生成的数字,就可以左右游戏的结果。而决定 EOS.WIN 系统随机数生成的因素为交易哈希 ID、成交区块高度、成交区块前缀、全局开奖序号等。其中成交区块高度、成交区块前缀虽然是未来某区块信息,但是在实施过程系统指定使用当前同步到的最新块信息,因而是确定的;同时,交易哈希 ID 能够通过交易内 action 结合块信息预先计算。于是随机数的生成仅依赖于全局开奖序号了。攻击者利用不断制造错误交易,造成交易状态回滚,控制全局开奖序号,从而控制随机数的生成,直到中奖。显而易见,EOS.WIN 的随机数生成算法不满足上述的第二条性质(不可预测性)和第四条性质(无偏性),因此存在漏洞,最终被攻击者有效攻击。


三、星系共识随机数生成算法

星系共识中的 RNP 星群借助承诺、零知识证明、门限秘密分享、门限签名、椭圆曲线序对等多种密码学手段,实现了安全高效的随机数生成算法,为整个共识过程安全提供了数据基础。为了能够形象介绍随机数生成算法的设计初衷以及其精妙之处,我们将其类比一个简单的游戏:

纸牌游戏
Alice 和 Bob 玩纸牌游戏,两人分别秘密选一张扑克牌放在桌面下方,选定之后,同时将纸牌亮在桌面上。如果两张纸牌的点数和为偶数,则 Alice 获胜;否则,为 Bob 获胜。

这个游戏看似简单,但是在区块链上公平的进行并不容易,要通过多种手段防止 Alice 或者 Bob 作弊。我们接下来一步一步分析:

问题 1: Alice 和 Bob 选定之后就不能再更换扑克牌,否则就可以根据对方扑克牌的点数决定自己扑克牌点数,从而获取胜利。例如,Alice 如果可以更换扑克牌,那么只要保证自己所选扑克牌和 Bob 的扑克牌点数具有相同奇偶性,那么点数和总为偶数,Alice 便可以获胜。

星系共识通过使用「承诺」(commitment)的方式来保证不会发生以上作弊行为。「承诺」是一种密码学工具,能够保证在不暴露原始数据的基础上,将其进行「证据留存」,它和明文是一一对应的,任何人都可以验证二者的对应关系是否成立。

结合我们的例子形象理解就是,Alice 和 Bob 将自己选定扑克牌撕一个小角下来,放在桌面上,这个小角不会暴露扑克的点数,而且只与撕坏的另一部分才能够拼接为一张完整的扑克牌。在星系共识协议中,这是 Random Beacon 的 DKG1 阶段,每个 RNP 节点计算其所选数据的承诺并发送到链上进行存证。


问题 2:Alice 和 Bob 在选好扑克牌之后,在正式亮牌之前要对自己的扑克牌保密,不能让对方看到。同时在亮牌时候要证明这张牌确实是之前选定的牌,而不是新选的另一张牌。

星系共识通过公钥加密算法加密原始数据,之后将加密结果发送到链上,保证了数据的机密性;同时使用零知识证明保证上链的加密数据与承诺完全匹配。结合我们的例子形象理解就是,Alice 和 Bob 将被撕过角的牌从桌下取出,扣在桌面上,并且二者都验证扣在桌面上的牌与之前放在桌上的小角能够拼接为一张完整的纸牌。在星系共识协议中,这是 Random Beacon 的 DKG2 阶段,每个 RNP 节点将其给其他节点的数据通过对方公钥加密之后发送到链上,同时发送到链上的还有 DLEQ-Proof,用于证明加密内容与承诺 CM 是匹配的。这个阶段之后,所有节点都可以从链上获取其他节点发送的数据,并且在本地解密为明文。


问题 3:开牌之后,需要计算两张扑克牌的点数。我们要保证 Alice 和 Bob 都要计算出同一正确结果。这个问题看似很荒唐,但是却非常重要。因为某位玩家可能会装疯卖傻,故意计算错数字,从而降低游戏进行的效率。

问题 4:此时,无论是 Alice 还是 Bob 都不能够终止游戏的进行。也就是一旦游戏开始,就一定要正常结束,不能因为某一玩家拒绝配合游戏规则而导致游戏流产。

星系共识通过使用分布式密钥生成的算法解决了问题 3,即所有 RNP 节点通过交互生成一个共同的组密钥(group secret key),这个密钥不会完整出现,而是分割为密钥碎片,每一个 RNP 节点掌握一个密钥碎片(group secret key)。之后,RNP 节点能够合成组密钥签名,而签名的哈希值即为最终的随机数输出。由于组密钥是公共确定的,因此组密钥签名也是唯一固定的。结合我们的例子形象理解就是,Alice 和 Bob 会计算得到共同的点数。

星系共识通过门限签名的方式解决了问题 4,即只要超过门限值数量的 RNP 节点参与计算,就能够合成组密钥签名。个别 RNP 节点拒绝参与计算并不会影响结果的生成。结合我们的例子形象理解就是,即使 Alice 不想亮牌,Bob 也有能力将两张牌亮出,从而完成游戏。

以上过程对应于星系共识协议中 Random Beacon 的 SIGN 阶段,在这一阶段中 RNP 节点合作生成组密钥签名并计算得到随机数输出。


现在我们把上述过程梳理一下:

1、Alice 和 Bob 扑克牌的点数之和是二者共同决定的;
2、每一局游戏的点数和都是独立的,不存在相互依赖的关系,因此历史游戏数据没有预测作用;
3、Alice 和 Bob 都无法提前知道对方的扑克牌点数,因此没有后发优势去左右点数之和;
4、Alice 和 Bob 可以选择任何一张扑克牌,因此点数分布是均匀的;
5、Alice 和 Bob 都无法中断游戏的进行;
6、任何第三方都可以对游戏过程进行审计,因为所有数据都在链上存证。

由以上分析可知,星系共识的随机数算法满足前文提到的六大性质,是安全高效的随机数生成算法。

本次对星系共识的随机数生成算法的解读到此结束,下次我们将对星系共识的 ULS 算法进行解读,敬请期待。
郑重声明:转载文章仅为传播更多信息之目的,版权归原作者所有。如有侵权/错误不完整之处请第一时间与我们联系修改删除。 谢谢。内容分析仅供参考,并不构成任何投资意见或建议。风险自控。
  • 微信扫一扫关注公众号,掌握币圈第一手资讯
返回顶部