区研社群最新线上系列活动:「区研大咖问」精彩上线!每期区研将邀请一位资深的区块链技术大咖来与大家互动解疑,分布式学习区块链知识,就在区研社~

感谢本期BOSCore工程师的精彩分享,以下为本期AMA回顾:

BOSCore是基于EOSIO软件的DPoS公链,于今年1⽉上线。拥有当前区块链最快的共识机制,达到3秒不可逆,并且配备了IBC(链间通讯)功能,旨在使⽤去中⼼化的技术重塑商业应⽤场景。

 Vito Jiang:BOSCore算法⼯程师,负责算法和密码学⽅案设计,有10年计算机软件开发经验,主要从事算法设计、数值计算、⼈⼯智能以及数据分析⽅⾯⼯作。

研究员11:可以介绍下BOSCore项目的目标和用户吗?

Vito Jiang:BOSCore是具有最快共识机制(3S LIB),并且第一个实现去中心跨链的DPoS公链。BOSCore定位旨在建立一个数字资产的自由港,为DApp的发展提供最强大的底层技术支撑,任何数字资产也都可以在BOSCore链上自由的交易。

很多应用场景都可以基于BOSCore来进行构建,比如游戏、金融服务、电子存证、供应链管理、数字版权等。BOSCore致力于为用户提供方便进入并易于使用的区块链服务,为DApp运营提供更友好的基础设施,为支持更丰富的应用场景努力,为DApp大繁荣进行积极尝试。

研究员11:目前随机数在区块链中的应用主要是哪些方面?

Vito Jiang:抽象来看支持虚拟机的区块链可描述为一个分布式的计算机(例如EOS定位就是区块链操作系统)因此宽泛的来说计算机上需要随机数的地方区块链上都会用到。

但由于区块链的特点导致目前随机数主要用在游戏以及包含混淆乱序逻辑的应用上,特别是在竞猜类游戏中的应用,随机性决定了公平性,一个随机数的好坏甚至决定的游戏的成败,小则引起体验差玩家流失,大则造成巨大损失伤害到整个游戏生态。

研究员11:目前区块链比较流行的随机数生成机制主要是哪些?哪些是目前最常用到的?

Vito Jiang:区块链里涉及到的随机数与通常我们说的随机数在生成使用侧重点等方面有着很多的不同,因此这里我们首先明确一下区块链随机数概念的意义,区块链里我们所讨论的随机的核心意义并不是数学或物理学上严格定义的随机性,我们所真正关心的是其不可预知性或者说是在一个公开见证网络里参与方的公平性即如何产生不受单方面或中心化组织控制的数。在这样的背景下目前比较流行的随机数生成机制概括起来主要以下几种方式:

1)、 直接由游戏方的后端服务器生成随机数,对游戏开奖;

2)、参与各方先行承诺,公布证据联合计算方案,也有人将其称之为”中本聪骰子法“,主体的思路就是:

a.所有参与方先提交一个对于某个随机秘密的承诺hash(secret1)、hash(secret2)、......

b.在完成需要随机数相关逻辑的初始化后需要具体的随机数的时候参与方公布secret1、secret2、......,

c.验证承诺,并用所有的证据作为联合输入生成最终的随机数。

3)、通过未来区块信息实现时间上滞后的随机数生成方案,也就说随机数采用确定的生成规则并用未来区块信息,并结合多项未来不可控或极难控制的变量因素(例如区块hash,交易笔数等等)作为输入生成随机数种子。

4)、可验证随机函数以及BLS签名方案,这两种方案类似的是采用确定性签名作为随机数生成算法,特点是可靠性依托于签名方案,且交互较少。区别在于BLS签名是一种门限签名方案天然的要求联合生成这一特性,而可验证随机函数是针对于单个参与方来说的,因此该方案还需要进行整合其他参与方,且可验证随机函数有多种实现方案。

5)、可验证延迟函数方案,该方案的核心思想与方案2)类似都是将随机性与未来相关联,不同的是可验证随机函数是可计算的是一个确定而当下未可知的数。

具体的:VDF是一类数学函数,能够使得该函数的计算需要至少一段已知的时间,即使是在同时使用大量 CPU进行并行计算的情况下仍旧同时满足唯一性和串行性两个特点,且结果的正确性是容易验证的,利用这些特性我们可以实现在时间上延后得到确定性数的即所谓的随机数的能力。

6)、预言机方案,这又是另一大类随机数实现方案了。因为Oracle 是作为区块链可信的外部接口引入到区块链中的,因此从某种意义上说我们认为Oracle所提供的数据是可信任的,于是进一步的我们认为预言机提供的随机数也是可信的随机的,因此我们采用不同的预言机就得到了不同的预言机随机数方案。

出于开发难度易用性以及安全性的综合考虑现实中最常用到的方案是上述提到的方案1)、2)、3)。

研究员11:目前区块链随机数在应用中有哪些问题和困难?

Vito Jiang:要回答这个问题我们应该从多角度来看随机数的应用。在实际应用时除了要考虑随机数方案的安全性还要考虑方案的开发实施难度、方案的计算效率和逻辑复杂度、方案中用户与合约的交互次数以及开发者知识储备等,这些因素会影响用户体验、应用的成本、开发周期等是DApp开发者不得不考虑的问题。

因此虽然从安全性角度考量前面我们讲的一些方案是优秀的,但从实际应用角度来看可能就不那么简单了。受限于这些因素,开发者往往最先选择的是实施简单的方案,例如用未来区块的某些不变且“难以预测的特性”作为随机种子,而这些“难以预测的特性”有时只是在一些不恰当的假设前提下才成立的,因此给黑客留下了可乘之机,最明显的是在EOS上已经发现了很多次针对项目方的攻击,导致项目方和玩家蒙受了巨大的损失。

可以肯定的说针对随机数漏洞的攻击一定还会继续存在,由于不恰当的随机数方案造成的漏洞也一定还存在。或许在我们讨论该问题的当下就有这样的攻击在上演。

另外我们只讨论了黑客攻击这一方面,而对于项目方所提供的随机数是否会侵害玩家的公平性我们并未提及,某些方案会导致随机数的可信严格的依赖于项目方的信用,例如前面说到的方案1)由项目方提供随机数,这种类型的随机数隐藏在各类竞猜游戏之下让我们看到了区块链随机数问题的冰山一角。

因此区块链行业的随机数问题是严峻的,如何让安全的方案更加易用,让易用的方案更加安全是我们众多从业者需要进一步探讨和解决的问题。

研究员11:BOSCore的随机数怎样做到更安全和易用的?

Vito Jiang:BOSCore的随机数主要是从易用性和安全性两个方面出发进行的改进,为了让随机数的使用像在中心化程序开发中一样,我们屏蔽了所有的安全处理细节,将随机数包装成为了与中心化程序开发一样的函数形式,同时为了一致性和安全性我们引入了超级节点BP参与随机数的生成和验证。

具体的BOSCore的随机数生成方式:

bpsig_action_time_seed = sign(BP_Sign_Key,F(block_timestamp,0.5)+global_action_sequence)

• BP_Sign_Key : 使用BP私钥签名,避免他人进行投机计算。

• F:将block_timestamp按照0.5向下取整,降低BP调整时间戳来进行投机概率。

• global_action_sequence: 全局action自增标识,防止 INLINE_ACTION 攻击。

它的使用也很简单,可以直接在合约的中调用,例如:

ACTION dosomething(){

size_t szBuff = sizeof(signature);

char buf[szBuff];

memset(buf,0,szBuff);

size_t size = bpsig_action_time_seed(buf,sizeof(buf));//只需传入缓冲区地址及大小,即可返回合约中可用的随机数

eosio_assert(size > 0 && size <= sizeof(buf),"buffer is too small");

std::string seedstr = to_hex(buf,size);//seedstr 即可作为随机数

}

基于BOSCore的随机数方案,可以让一部分数据从客户端生成,这样一个随机数的生成包含了项目方、BP、玩家三方,安全度十分高,使用方便。满足公平、公开、不可预测的原则。

贴了一些代码,只是想把问题讲清楚,各位看官见谅。

研究员11:BOSCore上面的DApp,推荐用什么样的随机数方案?

Vito Jiang:没有哪个方案是尽善尽美的,不同的应用场景有不同的最优解。在BOSCore上我们除了提供了简单易用的随机数方法(也就是上一个问题我介绍的方法)外,还提供了系列的解决方案,基本囊括了各种优秀的随机数方案(包括提供相应的密码学解决方案),并针对使用的人数规模给出了更加细致的分层解决方案,这使得BOSCore针对各种需要随机数的DApp可以做到全场景覆盖。

总的来说,一般场景下BOSCore上的随机数无论从安全还是易用性角度来看都是满足需求的解决方案,当你的DApp有着特殊需求时,BOSCore也有相应的解决方案提供。这样可以使DApp开发者更加专注于其擅长的游戏逻辑上来,而不必为一个在中心化开发中极为“简单”的随机数而耗费心力,从而能开发出更优秀的游戏,给玩家以更加的游戏体验,同时保证游戏是公正公平的。

研究员11BOSCore在关于随机数安全方面还有那些后续计划?

Vito Jiang:BOSCore的理念是为DApp而生,让BOSCore的使用者更加安全、方便、快捷地使用BOSCore永远是BOSCore的追求,因此我们还会进一步丰富随机数提供方案同时带来更多的随机数使用场景。

为了达成这一愿景,BOSCore推出了基于博弈的Oracle预言机,与其他预言机不同的是我们当前所见到的Oracle绝大多数都是作为区块链可信输入的形式出现的,其核心意义是为区块链上运行的程序提供可信的数据源,因而其设计也是围绕着如何保证输入数据的可信性来进行的。

这确实可以作为随机数方案来提供随机数,但很显然这样的预言机的能力是很有限的,BOSCore Oracle 从构建之初所考量的就是“并不把预言机当作区块链可信数据的提供者来看待,而是承认其不足进而将其作为博弈的参与方加入到系统中来,以期在博弈中达到可信”,这样在博弈过程中只要我们将参与方与现实世界的角色进行映射,那么我们不但能得到区块链输入数据的可信性,同时我们还可以向现实世界输出“信任”,这就像是一个基于区块链的可信平台,而它的服务展示形式是预言机。

我们可以向区块链提供安全方便的随机数,同时更能为随机数的应用提供更广阔的场景,因为BOSCore的Oracle 能结合更多的现实场景,并解决现实中的信任问题,这将会带来区块链真正的落地,也会带来随机数依托于区块链在现实生活中的更多应用。

顺便贴一张BOSCore Oracle的概念图:

研究员11目前链上随机数已成为各方争论的焦点,看好与看衰皆有,那么区块链随机数的优势与特点是什么?

Vito Jiang:我想人们之所以不看好区块链随机数的主要的原因是区块链随机数的开发难度较大容易出现各种漏洞从而导致财产损失,这是由区块链去中心的特性决定的。

而大家之所以看好区块链随机数同样也是由于它的去中心特性决定的,由于去中心的特性导致区块链上产生的随机数一定是确定的,同时大家联合产生的随机数可以避免生成的数被某一个体控制,因此理想的区块链随机数本质上是要产生一个可验证的、不受单一方控制的数。而这样的数的优势也是明显的,即它对于任何参与人来说是可证安全的(也就是说你只需相信自己提交的部分是安全的,那么你就可以信任最终的随机数是安全的)。

例如:某彩票系统采用的是摇奖的形式,对于彩票的购买者来说摇到的号码是否随机只能去相信摇奖人了,如果摇奖者作弊,对摇号器做了手脚使其能摇出的是一个预定的数,那么对于买彩票的人就无任何公平可言了,而如果区块链随机数生成的方式,那么我们就可以放心的说彩票的结果公平公正的,中不中奖全看人品了。同样的任何的类似的需要随机数的场景都可以用区块链的随机数来做,因为它能保证公平。

自由问答分割线

-----------------------------------------------------

区研成员:请问关于生态方面,BOSCore给开发者的激励机制是怎样的呢?

Vito Jiang:BOSCore专门建立了WPS,作为开发者的奖励机制。DApp开发人员,BOSCore代码贡献者都可以提交提案向BOS WPS提交提案,申请开发者激励奖金。

具体的可以参看BOS WPS相关内容,欢迎向BOS WPS提交提案。BOS WPS 网址:https://boswps.io

区研成员:BOSCore增发模型能讲下么?

Vito Jiang:BOSCore与EOS 的一脉相承的因此其增发模型也采用了与EOS一致的等比例线性递增模型,BOSCore每年增发2{57a47fa3c00b995430b25e4f3dc2aca9498ba8c691b7e02bab113c356d2c8a50},EOS是5{57a47fa3c00b995430b25e4f3dc2aca9498ba8c691b7e02bab113c356d2c8a50}。

区研成员:目前BOSCore生态发展的一些政策有哪些?

Vito Jiang:BOSCore一直有针对优秀DApp的技术和生态支持,BOSCore的预言机,可以用可信的方式打通数据上链同路,这本身就是为了扩展链上商业场景来做的。

感谢BOSCore工程师和各位参与的小伙伴们!

Leave a Reply

Your email address will not be published.