如何设计基于区块链的可证明公平的在线骰子游戏

时间:2018-10-09作者:klpeng分类:IT综合浏览:1039评论:0

如何设计基于区块链的可证明公平的在线骰子游戏

在过去,当我们玩传统的骰子游戏时,游戏公平性通常会得到游戏所有者声誉的认可。如果一个非常不走运的球员连续输了10次,他就无法判断他是不是不幸运。

在区块链技术的帮助下,现在我们有办法在技术上设计一个在线可证明的公平骰子游戏。区块链是一个透明的,防篡改的在线分类帐,每个人都可以审核。

我们很高兴看到最近在EOS社区中出现了数十个在线骰子游戏。遗憾的是,他们中的大多数都不是开源的,也不是钻机抗拒的,仍然为潜在的投注留下了不明显的潜在后门,这是冒险的,并且可以在很大程度上得到改善。然而,这些接近来源的骰子游戏确实帮助许多新手拥抱区块链并了解EOS世界的美丽。他们的努力不应该被遗忘,我们感谢他们对EOS生态学的增值。

因此,我们的DappPub团队希望与我们的开源FairDice游戏分享设计,并启发那些有兴趣释放DApps力量的人。

随机性是关键

关键是游戏必须提供一种单一方无法单独控制的组合随机性。

“我如何在智能合约中生成随机数?”
如何设计基于区块链的可证明公平的在线骰子游戏

就像BM在StackExchange上面回答的问题所回答的那样,对于一个双方(playerhouse)骰子游戏,提供公平性或防装备随机性的关键点需要一个3步骤的过程:

  1. 双方( playerhouse )提交他们种子的哈希:

    hash(player_seed) & hash(house_seed)

  2. 双方揭露他们的hash(player_seed) & hash(house_seed)

  3. Roll = hash(player_seed + house_seed)

最终Roll是随机的,它是一种基于house&& player输入(house_seed & player_seed)的组合随机性

2.序列图:理论上的随机骰子滚动过程

根据BM的答案,我们可以绘制理论随机骰子滚动过程的简单序列图,如下所示:

序列图:理论随机骰子滚动过程
如何设计基于区块链的可证明公平的在线骰子游戏

在步骤2中,为每个下注house创建³³一个新house_seed的并保持秘密直到步骤10。

在步骤3中,house计算相应的house_hashhash(house_seed)

在步骤4中,将house上传 house_hash到区块链。在这一刻,player仍然不知道是什么house_seed,他但确信house_seed在这次下注期间不会改变,他因为可以house_hash在下注后使用 来验证。比喻说,house_hash就像house一张放在桌子上的黑卡。

在步骤5中,player也创造了他的player_seed

在步骤6中,player计算相应的player_hashhash(player_seed)

在步骤7中,player上传player_hash到区块链。在这一刻,house仍然不知道是什么player_seed,他但确信player_seed在这次下注期间不会改变,他因为可以使用player_hash后来验证。比喻说,player_hash就像player一张放在桌子上的黑卡。

在步骤8中,player将他上传player_seed到区块链。

在步骤9中,部署在区块链上的开源智能合约验证player_seedplayer_hash是否匹配。

在步骤10中,house将他上传house_seed到区块链。

在步骤11中,智能合约验证house_seedhouse_hash以查看它是否匹配。

在步骤12中,合约智能计算hash(player_seed, house_seed)名单最终的卷号。

3.序列图:优化的“FairDice”随机骰子滚动过程

现在我们可以开始构建我们自己的区块链动力骰子游戏了。与其他区块链基础设施相比,EOS在这里是首选,因为它速度快,并提供良好的用户体验。

事实上,优化的全过程,的英文这不必要的player柯林斯上传player_hash状语从句:player_seed在两个步骤。

house换句话说,因为已经将他的暗牌(house_hash)放在桌子上并且在下注期间无法改变它,所以player可以直接将他的开放牌(player_seed)放在桌子上,而不是将他的暗牌(player_hash)放在桌子上桌子和player_seed两个步骤翻转卡()。

因此,我们优化了整个流程并改善了用户体验,如下所示:

序列图:优化的“FairDice”随机骰子滚动过程
如何设计基于区块链的可证明公平的在线骰子游戏

在步骤1中,由于在游戏中引入了“推荐奖金” referrer,因此ROLL under to win将一起发送给house

在步骤2中,为每个下注house创建³³一个新house_seed的并保持秘密,直到步骤9。

在步骤3中,house计算相应的house_hashhash(house_seed)

在步骤4中,house创建house_signsign(ROLL_under, hash(house_seed), expiration_time, referrer)

在步骤5,house发送house_hashhouse_sign......到player

在步骤6中,player创建他的player_seed

在步骤7中,playerhouse_sign与上传player_seed到EOS区块链。

在步骤8中,部署在EOS上的智能合约检查以防止通过欺骗player来重放攻击前house_seed一个house_sign

在步骤9中,house上传house_seed

在步骤10中,智能合约验证house_seed它是否与其匹配,house_hash以防止偷偷摸摸地house交换house_seed

在步骤11中,智能合约roll基于player_seed与计算名单最终数量house_seed

欢迎添加我微信沟通学习交流

如何设计基于区块链的可证明公平的在线骰子游戏

打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢