Ultrain首席密码学家:随机数的原理与应用

2019-01-05 12:31 栏目:经验之谈 来源: 查看()
众所周知,区块链技术的核心特征是存储在区块链网络中的任何数据,这些数据以及数据的操作都是不可修改的,不能删除,不能被破坏,并且对每个人都是透明的。可以参考,因此您可以信任数据的真实性和可靠性。通过这一技术特征,区块链技术可以帮助商业社会解决其中一个问题,即公平问题。

公平意味着每个人都得到公平对待,即以相同的概率选择和执行请求;当多个人争夺一个利益时,在统一的规则下,每个人都有同样的机会参加比赛,并且对待同样的事情。

在现实世界中,有无数的“公平”核心业务活动,如车牌号码,买房彩票,彩票抽奖,纸牌游戏抽奖,德州扑克牌等游戏牌照他们等等。在传统的技术手段下,由于技术限制,这一过程往往不透明,导致参与方受到极大的争议和批评。例如,对于普通抽奖纸牌游戏(Gacha),游戏的一种机制是通过花费法国货币来抽取牌。卡片根据稀有程度(即抽水的概率)而不同,卡片的能力越罕见。玩家越强,就会经常抱怨某张珍贵牌的概率太低。针对这一问题,中国文化部发布了关于2016年网络游戏运营事后监管规定的通知》。该通知首次表明网络游戏运营企业应该从5月1日开始, 2017.游戏的官方网站或随机提取的页面公布可以提取或合成的所有虚拟物品和增值服务的名称,性能,内容,数量和提取或合成概率。但是,这项规定是严格执行的。由于所有程序都在游戏制造商的服务器上运行,因此游戏制造商的意识只能保证执行,并且玩家只能信任或依赖制造商。

我们使用区块链技术通过实施两个更改来实现此问题:

1.完成基于智能合约的游戏卡片绘制业务的逻辑并登陆公共链;
2.在基于区块链技术的卡片绘制逻辑中实现随机数生成逻辑,并在公共链上着陆;

通过这两点,卡片绘制的逻辑不会被篡改,写入后也不会被破坏。它可以由网络上的每个人检查和验证,并且将记录所有运行结果。游戏制造商完全无法运行结果。介入和操纵。

为了实现公平,首先,销售业务的智能合约应该在完全分散的区块链公共链上运行,以避免人为因素的干扰,如集中或半集中技术,其次,随机数生成机制也必须没有漏洞和公平。

确保实现的第一点是选择公共分散式架构公共链接,第二点是我们今天要关注的内容,如何在区块链服务上实现公平无瑕的随机数生成。

要在区块链上实现随机数生成服务,我们可能有三种技术解决方案:

1.引入真正随机数的外部来源:

CPU中通常有一个Ture随机数发生器(NG)。真随机数发生器通常通过放大电路的热噪声来产生随机数。我们知道原子中的热运动高于绝对零度。在集成电路中,这些原子的热运动将在电路中产生噪声。噪声会引起电路电压的轻微波动。 NG将放大这些微小的波动。生成随机数。然而,该随机数的生成是集中式方法,其不适用于区块链,因为除了随机数的生成者之外,其他人不能证明随机数的生成是否可信。还在捏造;在许多节点中,无法就随机数的真实性达成共识;

2.通过区块链系统中的公共种子生成:

矿工引入了两个区块链输入,交易和随机数。对于PoW,nonce是为了帮助PoW生成符合本轮要求的哈希值。矿工们自己需要很高的计算强度。如果要对nonce进行操作,则相当于为挖掘添加其他约束。大幅增加。但是,如果块头用作随机源,则很难多次尝试,因为矿工每块的成本很高。然而,在具有较少计算能力的PoW公共链上,生成块头的成本相对较低,并且随机数的安全性大大降低。此外,PoW具有分叉的可能性,因此最后生成的随机数需要足够长的确认时间,导致随机数的实时性能不足。

在pos链上,块的安全性不再存在,因为nonce可以是一个简单的块高度,并且生成块的成本几乎为零。因此,节点可以通过不断修改事务组合来尝试生成不同的随机。数。因此,基于EOS块头生成的随机数很容易被操纵并且非常危险。

其中最常见的是EOS在随机数方面的漏洞。以下是链上常见的伪随机数算法:

Ultrain首席密码学家:随机数的原理与应用

广泛引用的github代码:

https://github.com/generEOS/eosio.random/blob/master/random.cpp
所有上述情况都有一个共同特征,即tapos_block_prefix和tapos_block_num用作随机数种子。

但是这两个值实际上依赖于过去的块来通过确定性逻辑生成随机数,因此块生成器可以通过不断尝试打包事务内容甚至伪造虚假事务来操纵最终生成的随机数。

例如,对于使用具有随机数漏洞的上述获胜赔率的游戏,攻击者可以提前计算结果,在获胜时下注,而在失败时不下注,从而保证100%的赢率。

通常,将用户输入作为随机源的所有随机数都是易受攻击的。因为输入可以被修改,所以输入的数量和组合可以由节点控制,因此节点具有完全的动机和改变随机数以适合其自身组合的能力。

3.集成多用户主观随机源生成:

还存在随机数生成方案,其尝试将不同用户的主观随机源集成为随机数种子。通常,多个用户提交他们自己的随机数,并且该节点组合所有提交的随机数以生成最终的随机数。鉴于多个随机源的相互独立性,理想的结果仍然是随机的。

从设计的角度来看,这种方案高度可靠,但在实施过程中仍存在以下问题:

- 多个用户可以相互观察并确定是否提交随机数,从而导致首先提交的人被暴露。目前通过惩罚机制解决了这个问题。
- 节点可能故意打包某些有利于最终结果的随机数。这涉及到公平共识的问题。基于dpos共识的任何区块链系统都不能保证,因为参与共识的节点数量很少,因此节点可能是伙伴或阴谋,在最坏的情况下,所有提交的随机数。生成的事务是由坏的共识节点本身控制的客户端,导致随机数结果被完全控制,并且根本不能观察到这种恶劣的情况。 Tendermint或联盟链也有同样的问题。

在这方面,Ultrain结合自己的RPOS一致性算法来设计自己的随机数生成算法,以避免上述问题。以下总结了Ultrain随机数生成的过程:

l建立随机数生成委员会。该委员会是一个开放的结构。会员可以随时加入和退出。想要参与随机数生成的所有成员通过注册系统注册为委员会成员,并且公钥被随机注册。该号码在智能合约中生成。

l在每轮共识时间内(Ultrain为10秒),委员会成员提交自己生成的随机数,这些随机数必须由VRF(可验证的随机函数)与成员的私钥结合生成,从而避免随机数控制。

智能合约通过整合每个成员提交的随机数形成随机种子,并基于种子生成随机数。

l对于注册参与的节点,不会提交任何提交。

生成随机数的过程具有以下优点:

1.充分随机:因为VRF的结果足够随机,所以用户的私钥保密,因此最终结果是随机的。
2.更快的生成:与基于块的生成方法相比,Ultrain每轮生成10秒的随机数,无需等待确认时间,仅为其他公共链的生成时间的十分之一。与Dfinity类似,该组的成员需要相互通信和验证,并且通信复杂性,等待时间和防冲突更加困难。
3.充分的安全性:由于委员会成员是开放的,参与者完全没有固定,大大降低了随机数结果勾结的可能性。对于参与者,VRF限制了可以提交的随机数的可能性并阻止了操纵。


作者:Ultrain首席密码学家Husen Wang Husen

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发