Neo N3在随机数算法领域的困难与愿景|Neo专栏

共 2268字,需浏览 5分钟

 ·

2021-08-25 23:25

上一篇Neo专栏中

作者为我们分析了区块链引入随机数的重要性

解答了为什么N3要克服重重困难引入随机数的问题🔍


本篇文章中

作者将继续为我们揭秘引入随机数的困难具体有哪些

以及Neo在随机数算法领域究竟有何发展目标😎


快来一起看看吧👀👇

在上一篇博客中我们一起了解了在区块链中引入随机数的重要性。但问题是既然随机数这么重要,那为什么区块链发展这么久了,对随机数的支持还这么拉胯呢?比如,大多数内置随机数的项目还是用随机数来做绿色环保的区块生成权的竞争,用以取代高耗能的算力证明,而这类随机数是没办法用来做合约的随机数种子的。比如Chainlink是以外部回调这种昂贵的机制为智能合约提供基于可验证随机函数(VRF)计算出的随机数,对每一个特定用户请求返回一个相应的可验证随机数。在ETH2.0中也有专门关于安全随机数的协议,就是用可验证延迟函数(VDF)来计算随机数,或者计算随机数种子,并且为了保证延迟函数的准确性,以太坊基金会还在和IPFS一起合作研发专门用来计算可验证延迟函数的设备。

生成随机数这件事本身对于现代的设备来说一点都不难(不追求潘建伟老师那种量子随机数发生器的安全程度),毕竟我们现有的电子设备几乎都有自己独特的安全的随机数生成算法。可是这些随机数生成算法都是中心化的,由单一一台设备独立生成,几乎可以说是完全在一种可被操控的环境下生成的。这问题在中心化系统里并不大,毕竟随机数的生产者和消费者不是一个主体,生产者的目的就是尽量随机,操纵随机数这件事对他没有任何意义。这种最直接的例子其实就是游戏里的抽卡机制,随机数的生产者(或者叫随机数生成器(RNG))是在游戏的服务器端的,生成的随机数主要是为了作为用户抽卡成功与否的一个判定条件,这个随机数值本身对服务器来说没有实质上的意义,只要保证整体概率就行。真正的随机数的消费者是游戏玩家,而玩家又不参与随机数的生成过程。

但问题是我们在一个去中心化的区块链系统中,所有的数据都是公开的,节点的身份都是生产者和消费者二元一体。如果这个随机数的生成过可以被任意节点控制,那整个系统也将变得不可靠。尤其是如果这个随机数由议长(Miner or Primary)来生成,那么议长将比任何人都提前知道跟随机数相关的合约的执行结果,从而使得议长有能力通过MEV攻击来作恶。因此,我们是不能依赖任何单一节点在本地不可控地随机生成随机数的。

也有曲线救国的方式,那就是利用线上数据作为随机数源,毕竟区块链作为一个封闭系统来说,除了计算之外还有现成的链上数据可以利用,交易的哈希啊,区块的哈希啊等等都是宝贵的数据,并且由于这些哈希是由哈希函数生成的,也满足随机数在空间上均匀分布的特性。可是这种方案的问题在于线上的数据量是很有限而且公开的,尤其是当合约利用链上数据进行处理以得到随机数的时候,随机数就很容易被黑客猜解,比如当年EOS里大量被黑客通过猜解随机数而攻击的博彩类dApp。

不能直接由单节点生成,又不能依赖链上的公开数据,还要保证在分布式系统下结果唯一。在这已经很苛刻的条件下我们还希望Neo能提供用户友好型的随机数算法,使用户可以在合约运行时不限次数的调用随机数,且每次调用都维持低成本。说实话,在前几年空想随机数阶段,我完全没有预料到这个过程实施的时候会这么艰难。为了避免议长随机生成任意随机数,我们计划用VRF来让议长以一种可控的形式生成唯一的可验证的随机数。但是这种方式会使得议长比任何人都提前知道随机数的值。因此我们又考虑VRF+抗PEV(MEV in ethereum)攻击的算法来保证即使议长知道了随机数的值也没有办法临时生成针对性的交易。可是这种方案又被证明容易受到影子议长的攻击。经过漫长又曲折的社区讨论之后,最终我们决定基于BLS💡来开发Neo特定的随机数算法。

BLS算法是一种分布式的带有门限的聚合签名算法,以m out of n举例,所有参与者n个人每人用自己本地的私钥来签名同一个数据,然后广播,任意节点只要收集到m个签名,就可以聚合生成唯一的聚合签名。这种算法看起来很适合Neo的dBFT共识,可是问题是n个节点的本地私钥不是节点自己随便独立生成的,而是需要经过一个相互沟通的初始化过程,这个初始化过程比较复杂,想要跟现有的dBFT共识兼容的话,需要做大量的研究工作。这个目前是NGD的金桥同学和逗比同学在负责,我负责打辅助。

面对元宇宙和区块链游戏的生态建设,Neo的目标是把随机数算法做的和普通的系统调用一样方便便宜且不受限制,而不是像现有的解决方案一样调用昂贵且过程繁琐,并且在实现这些的同时保证随机数发生器的安全。

- 推荐阅读 -

All in One · All in Neo

Neo是一个由社区驱动的开源平台。利用区块链技术与数字身份,开发者可以通过智能合约实现资产管理数字化与自动化。Neo致力于通过分布式网络建设下一代互联网基础设施,为区块链技术大规模落地奠定基础,以实现智能经济的宏大愿景。

自2016年上线至今,Neo主网已稳定运行超过四年。全新版本Neo N3预将于2021年发布,将提供更高吞吐量、更强稳定性与安全性,并带来优化的智能合约系统及功能丰富的基础设施集合,旨在赋能开发者并加速企业级区块链创新。

浏览 65
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐