NULS主网核心开发者王志坚:为Dapp而生的公链底层随机数机制是什么样的?

官方新闻NULS中文社区2019-03-15 18:28:48  阅读 -评论 0

文/CoinVoice

据福布斯报道,近日区块链和加密货币的坚定支持者、前比特币基金会主管Brock Pierce对2019年的区块链和加密货币做了一些预测。Pierce认为,2019年将有多个DAPP的用户达到100万。

 

然而,令人担忧的是,随着DAPP应用和数量的不断增长,多个EOS以太坊平台DApp因为随机数生成漏洞被黑客攻击的情况也层出不穷。比如此前EOS的Luckyos、EOS.Win、EosDice以及以太坊上的Fomo3D等被攻击事件。该类事件对公链的应用探索和推广造成了一定的冲击。

 

针对这种情况,近期CoinVoice邀请到了NULS核心团队技术产品部负责人王志坚,作为COINVOICE商业第五期公开课的嘉宾,听他讲述为Dapp而生的公链底层随机数机制是什么样的。

 

NULS是一个提供可定制化服务的区块链基础设施,采用微服务思想,实现高度模块化的底层架构,运用模块仓库、智能合约和跨链等技术,同时结合链工厂快速搭链的能力,降低区块链开发成本,推动区块链商业应用落地。

 

本期COINVOICE商业公开课的直播嘉宾王志坚拥有10年的编程经验,长期从事应用研究和开发,精通区块链、大数据,精通大型并发系统架构,目前是NULS主网的核心设计者、开发者。

 

以下为直播分享实录:

 

大家好,我是NULS王志坚,很高兴可以借助CoinVoice的渠道给大家分享下NULS的技术细节,在NULS最近的一个v1.2.0版本中,我们做了一项底层协议升级,增加了一种随机数支持机制。这个随机数支持机制是为了解决DApp中随机数安全与公平的行业问题而提出的,下面我就详细的说一下这个机制。

 

当前行业的问题

 

随着DAPP越来越受到开发者和用户们的青睐,运行在区块链上的DAPP越来越多,不可避免的暴露出一些问题,比如很多博彩、游戏、抽奖活动、密码应用项目中,虽然标榜自己的去中心化特性,但实际上是不是真的安全、公平,并不能百分之百地保证,核心问题就是去中心化随机数问题。

 

目前大部分用到随机数的DAPP中,使用的随机数都不能做到既保证公平,又能让黑客无法根据随机过程提前预测或者控制随机结果。

 

那么可能很多人就会问,就一个随机数而已,能有多困难?计算机行业发展这么长时间又不是没有用过随机数?怎么突然就成了一个难题了。

 

实际上随机数从来都是计算机行业中一个重要的领域,对随机数的研究很早就开始而且从没有停止过。传统的随机数一般是从CPU或者内存地址等处获取随机种子,使用特定的随机算法生成结果,这种方式叫做伪随机数。

 

可能有人就要问了,伪随机数听起来就不怎么好,那真随机数呢?计算机的世界里就没有真随机数,什么是真随机数?

 

举个例子,当人不知道走哪个方向的时候,朝天上扔一只鞋,然后鞋尖指着哪个方向就往哪里走,这就是真随机数,但是在计算机行业中,这个在计算机中是做不到的。

 

虽然伪随机数解决了计算机随机数的问题,但和区块链结合起来就不行了,区块链的特点决定了其并不能简单地使用传统的随机数,这个特点就是分布式共识,需要在多个不同的机器中得到相同的结果,这就是它最大的难点。

 

当前行业的解决方案

 

虽然是难点,但不是没有解决的道路。针对这一情况NULS团队成员调研了当前行业中的大部分解决方案,总结了下面几种运用最广泛的区块链随机数使用方式:

 

1、 使用链上数据作为随机种子

主要是使用区块hash、时间、交易时间、交易hash、交易数量等等内容,采用公开的,所有节点认可的算法,将链上数据聚合为随机种子,再通过约定好的算法生成最终随机数。

 

2、中心化的随机数服务

区块链上的应用通过访问中心化的服务获取随机数,代表:以太坊上的Oraclize。

 

3、多方参与的随机数生成器

确定一个随机数生成周期,然后每个参与方提交最终结果的一部分,最后通过一种算法生成一个随机种子。参与者随时可以退出和加入。

 

4、交互式的随机数生成机制

所有使用同一个随机数的用户,都提交一个密钥,在第一次提交时,提交密钥加密后的密文,在业务完成后提交密钥的明文。这样最终的结果通过所有提交的密钥生成随机种子,在根据随机种子生成最终的随机数。

 

其他的方式也基本是这四种方式的变种或者优化版本,下面我就说一下这几种方式的优缺点:

 

1、使用链上数据作为随机种子

这种方式的优点就是简单,只要拿到链上数据通过算法计算就可以了,缺点:这种方式有两种使用方式,一种是使用已打包的区块中的数据,另一种是使用未来块中的数据。

 

第一种情况因为已经出块,那么只要知道了随机数的计算函数,就可以提前预知最终的随机数结果,第二种情况,因为区块尚未打包,那么就可以在打包时候对其结果进行控制,可以通过各种手段使其最终生成的结果更符合攻击者的预期。

 

2、中心化的随机数服务

这种方式很显然,它是违背区块链思想的,至少是违背一条公链的思想的,而且也不能保证服务提供者一定是诚实、公正的。

 

3、多方参与的随机数生成器

这种方式理论上是可行的,首先它是去中心化的、公开的,是符合区块链思维的,但是在实际场景中却不容易实施。

 

首先参与者需要有利益才会提供服务,没有利益没有参与者就违背了去中心化的设计初衷,如果对参与者给与奖励就需要有奖励提供者,表面看使用者提供费用是可行的,但实际又增加了使用者的成本。所以方法是很好的方法,但实际使用还是有非常大的限制。

 

4、交互式的随机数生成机制

这种方式看起来也很好,很公平。但放在实际使用场景中就会发现,用户使用这种方式的话,需要每个用户对随机数做两次操作,这是非常不友好的行为,很可能招致用户的厌烦。

 

针对上面的调研情况,NULS团队讨论了几种机制解决这些问题,最终采用的方案是由团队的高级架构师周利均提出来的,下面我就仔细说说NULS的随机数机制。

 

NULS的解决方案

 

NULS采用POC共识,参与共识的节点在满足条件的前提下,是持续参与网络维护的,并且参与出块的节点中绝大部分都被认为是诚实可信的,我们可以利用这个优势,制定一个随机种子生成机制,服务于在NULS上搭建的DAPP。

 

此随机种子需要满足随机性、不可预测性,做到既保证公平公正,又能让黑客无法根据随机过程提前预测或者控制随机结果。

 

机制内容:

 

我们的设计的实现方式是基于POC共识的两段式提交的随机种子生成机制。即每个节点在出块的同时生成一个随机种子,并对该随机种子进行加密处理,将生成的密文包含在区块头中,同时获取该节点上次出块时生成的随机种子,将该种子的明文包含在区块头中。

 

如此这般每个节点生成的随机种子都由前一个本节点出的块进行确认,确保不可随意篡改。

 

这样做的效果就是每个块中都有一个256位的明文随机种子,同时对于出块的节点来说,还把未来自己打包的下一块的随机种子提前做了确定,这样其他人是不知道未来的随机数种子是什么的,但不影响未来其他节点可以对随机数种子进行验证,这就保证了没有人可以控制随机种子的生成。

 

从使用者的角度来看,NULS底层只是在每个块中包含一个256位的随机种子,使用者可以不去考虑随机种子是否值得信任,是否可能被操控,因为这是由底层机制保证的。

如何使用:

 

NULS底层提供了多个接口,可以获取不同高度不同数量的随机种子,也可以通过制定的几个算法,获取若干个随机种子合并生成的256位随机数,当然也可以把这个结果当成一个随机种子再通过不同的方式进行计算获得最终需要的结果。

 

具体的随机数使用文档可以参考NULS的文档库,查找rpd接口和智能合约接口的使用文档:http://docs.nuls.io/

 

机制优点:

 

本方案的优点:

1、更公平,基于底层共识实现,全部共识节点参与,串联难度大。

 

2、更安全,种子Hash与明文种子两段式提交,提交Hash时不能计算结果,提交结果时不能篡改。底层直接提供接口获取随机种子,随时可以根据参数进行验证。

 

3、更灵活,随机种子计算方法支持多种算法,增加随机算法复杂度,提高作恶成本。

 

4、更方便,底层直接提供接口获取随机种子,应用端使用时方便获取,安全、高效。在提供智能合约SDK接口的同时,还提供RPC接口的访问方式,不限制应用的使用场景。

 

5、不影响扩展性,NULS这是提供了这样的机制,并不限制应用一定要使用或者如何使用,NULS上搭建的DAPP一样可以用其他随机数获取方案。

 

任何一个机制或者方案,总是会有它合适的使用场景和不合适的使用场景,那我说一下NULS这个机制适合在什么场景下使用。

 

最适用场景:

 

未来结果型场景,指定未来高度为n附近的随机种子,合并生成最终的结果。这种场景使用NULS底层随机种子,最多可以让全部共识节点参与其中,可以说完全保证了算法的安全性和公平性。

 

比如近年来政府推广的双随机系统,在区块链中实现的话就可以使用NULS的机制,首先输入待选定的资料库,指定结果生成高度,在指定高度根据随机种子计算出最终需要的结果,不可操控、不可篡改,非常完美的解决了当前一些系统可操纵、可篡改的问题,真正做到使用区块链让世界更美好。

 

机制不是万能的,使用者很重要

 

任何机制都不是万能的,使用者如何使用才是安全、公平的关键。不论是智能合约还是其他方式的链上应用,都应该谨慎选择自己的随机数机制,考虑到各种不同的情境下的安全问题,

 

只要所有开发者都认真起来,任何问题都可以解决。

 

以上就是NULS最近升级的底层随机数机制,感谢!

上线交易平台

币安:https://www.binance.com/

火币全球站:https://www.huobi.com/

火币韩国:https://www.huobi.co.kr

OKEx:https://www.okex.com/

KuCoin:https://www.kucoin.com/

Bit-Z:https://bit-z.com/

IDAX:https://www.idax.mn/

CHAOEX:https://www.chaoex.com/

DragonEx:https://dragonex.io/

Wazirx:https://wazirx.com/

QBTC:https://www.qbtc.com/

TOTOK:https://www.tokok.com/

Cointree:https://www.cointree.com/buy/nuls

币和:https://www.bibr.com/

Ktrade:https://www.ktrade.io/

CEO:https://ceo.bi/

Inex:https://www.inex.exchange/

7ebit:https://www.7ebit.com/

Coinspot:https://www.coinspot.com.au/

Bloex:https://www.bloex.com/

Simpleswap:https://simpleswap.io/

GDEX:https://www.gdex.io

了解NULS

项目网站:https://nuls.io/

微博:https://weibo.com/nulsio

Twitter:https://twitter.com/nulsservice

Medium:https://medium.com/@nuls

Telegram:https://t.me/Nulsio

Facebook:https://www.facebook.com/nulscommunity/

Github:https://github.com/nuls-io/nuls

Reddit:

https://www.reddit.com/r/nulsservice/

Steemit.com:https://steemit.com/@nuls

Gitter:https://gitter.im/nuls_io

Slack:https://nuls.slack.com

扫码关注

公众号

链接新世界

NULS,让区块链更简单!

因为认同,所以分享

感谢每一位社区成员,一起转发朋友圈吧

声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们kefu@lianshijie.com

    参与讨论 (0 人参与讨论)

    相关推荐

    比特币有什么缺点?

    1.交易平台的脆弱性。比特币网络很健壮,但比特币交易平台很脆弱。交易平台通常是一个网站,而网站会遭到黑客攻击,或者遭到主管部门的关闭。2.交易确认时间长。比特币钱包初次安装时,会消耗大量时间下载历史交易数据块。而比特币交易时,为了确认数据准确性,会消耗一些时间,与p2p网络进行交互,得到全网确认后,交易才算完成。3.价格波动极大。由于大量炒家介入,导致比特币兑换现金的价格如过山车一般起伏。使得比

    业务中使用区块链的四种方式

    业务中使用区块链的四种方式

    暴走时评:区块链是一种支持像比特币这样的数字货币的公共分类帐本,并且正改变着我们的业务方式。一旦那些对匿名交易,甚至是秘密交易感兴趣的人接纳了这样一种鲜为人知的工具,加密货币就会日趋成为主流。 区块链是一种支持像比特币这样的数字货币的公共分类帐本,并且正改变着我们的业务方式。一旦那些对匿名交易,甚至是秘密交易感兴趣的人接纳了这样一种鲜为人知的工具,加密货币就会日趋成为主流。越来越多的个人和企

    区块链:法定数字货币技术路线的必然选择

    区块链:法定数字货币技术路线的必然选择

    在人类发展史上,货币的进化从未停止。从物物交换,到金属铸币,再到纸质货币,以及当前正在发展的数字货币正在向着越来越便捷的方向进化。 比特币的出世起初并未带来轰动,但是最近几年其价格惊人的爬高创造出了一个个造富神话,引起各国政府及监管机构的关注。虽然金融专家普遍认为它只是一种资产,而非货币,但是,其背后的区块链(Blockchain)技术引起了包括各大金融机构、政府、企业及学术界的浓厚兴趣,未

    用区块链记录证书,证明真伪,墨尔本大学迈出了第一步

    用区块链记录证书,证明真伪,墨尔本大学迈出了第一步

    墨尔本大学宣布发起区块链认证和审核计划,允许通过一种隐私、安全且持久的方式验证学生的证书。 墨尔本大学正在试验一个区块链记录维护项目,允许接收者(即学生)存储他们的证书,出于核验目的,第三方也能访问这个系统。Learning Machine是这个发布系统的开发者,他们采用的是麻省理工媒体实验室(MIT Media Lab)在2016年提交的Blockcerts开源代码。 墨尔本大学副校长格雷

    日本IT巨头富士通联合日本“三大行”开发区块链p2p资金转移系统

    日本IT巨头富士通(Fujitsu)与三家大型银行已经宣布计划试点一项基于区块链创建的点对点资金转移系统。 通过与日本三大行——瑞穗金融集团,三井住友金融集团和三菱UFJ金融集团——的合作,富士通将现场试验一种基于云的区块链平台,用于在个体之间发送资金,并开发一款智能手机APP来提高这个系统的可用性。 从理论上讲,这个平台将把三大行的客户法定货币账户与这个区块链系统相连接。客户然后将能够使用这

    动画科普:什么是比特币?

    动画科普:什么是比特币?

    比特币(Bitcoin,简写BTC)概念由中本聪(化名)提出,是一种点对点、去中心化的数字资产;2009年,中本聪打包了第一个区块,并获得50枚比特币的挖矿奖励,挖矿奖励每4年减半一次,按此计算,比特币预计2140年发行完毕,总量为2100万枚。 随着比特币的发展,比特币逐渐受到认可:德国为全球首个接受比特币支付的国家;微软、戴尔等知名企业也纷纷接受比特币支付。 举个栗子,你能直接用比特币买到

    3分钟理解什么是公有链、私有链、联盟链、许可链

    不同的区块链有着不同的内涵和功能,在区块链领域经常出现的公有链、私有链、联盟链、许可链,这些又都代表什么意思呢? 公有链 公有链是指全世界任何人都可以随时进入系统中读取数据、发送可确认交易、竞争记账的区块链。公有链通常被认为是完全去中心化的,因为没有任何人或机构可以控制或篡改其中数据的读写。公有链一般会通过代币机制鼓励参与者竞争记账,来确保数据的安全性。比特币、以太坊都是典型的公有链。 私

    区块链是比特币的底层技术,但似乎两者已走上不同的道路

    区块链是比特币的底层技术,但似乎两者已走上不同的道路

    比特币的出现带来了一项新的技术——区块链,不过区块链和比特币似乎已走上了两条不一样道路,作为技术的区块链被越来越多的人所看好,而性质偏向于投资的比特币似乎被更多人看衰。 成也萧何败也萧何 比特币火爆的原因是其拥有去中心化、全世界流通、专属所有权、低交易费用、无隐藏成本、跨平台挖掘的特性,这些特性促使比特币成为了很多人关注的焦点。之后众多庄家的入局让比特币一瞬间成为了热门投资产业,但这几大特

    麦妖榜
    更新日期 2019-09-03
    排名用户贡献值
    1牛市来了30910
    2BitettFan24187
    3等待的宿命23810
    4区块大康20369
    5六叶树20310
    6linjm122719429
    7天下无双16192
    8lizhen00215280
    9让时间淡忘14586
    10yelanyi050511349
    返回顶部 ↑