区块链研习社区块链入门

棋牌类游戏在区块链中的设计探讨

2019-02-23  本文已影响14人  王巨

简介

随着区块链的发展,特别是以EOS、GXC为代表的高性能区块链的崛起,为区块链游戏带来了非常大的活力。这里想探索一下棋牌类游戏如何以比较完美的姿势上链,并且结合区块链的特性打造超越传统中心化游戏体验并且公开透明、公平可信的游戏。

待解决的问题

链下系统解决用户体验

单纯使用区块链技术,在目前是没有办法解决游戏的延时问题的,因此采用链上系统与链下系统相结合,将两种系统的优势发挥到最大才是当前能提供完美用户体验的优选方式。那么如何结合呢?我理解大致的流程应该如下:

预上送Hash解决随机性问题

关于区块链的随机性问题,已经有着比较成熟的解决方案了。那就是游戏参与方首先将自己的随机数Hash上链,这样可以保证各自的随机数产生之后不会再改动,然后再将随机数上链并将各方的随机数合成到一起成为一个真正的随机数,这过程由于各方均无法预知对方的随机数因此也就不存在作恶的可能。比如斗地主游戏,可以这样设计:玩家A、B、C与服务器S各自产生一个随机数以及随机数对应的Hash,在开局时A、B、C、S将随机数Hash先上链,然后A、B、C将各自的随机数发送给S(此处可以是链上操作也可以链下操作),然后S将四个随机数合成为随机数种子通过一定的随机算法产生随机的牌序列,在链下开始游戏;进入复盘阶段后S需要将自己的随机数以及整个的游戏的过程上链进行复盘,合约要校验A、B、C、S的随机数的Hash是否与开始时的Hash一致。

随机算法可信性

上面提到了一个问题,就是如何使用一个随机数产生一个牌序列,这个算法要保证链上与链下算法的一致性,在复盘时需要校验,这样才能保证可信。

可信计算解决保密性问题

牌类的保密性问题如何解决,如何能保证服务端不作恶?上述复盘的方式可以保证服务端不会通过改变牌序列来作恶的问题,但是无法保证服务端的信息泄露的问题,若有人能窥探到服务端,那他就相当于有了上帝视角。如何避免这种情况发生呢?首先这种情况是无法完全避免的,传统的游戏厂商事实上也没法完全避免,大厂们肯定是会加强自己的服务端的管理制度从行为上杜绝这种情况的发生,因为保证游戏公平性是他们的长久立足的根本。但是小的游戏厂商,若中间再有点菠菜性质,那么用户事实上就是待宰的羔羊。那么作为一个区块链的小游戏如何从技术的角度去缓解这种问题的发生呢?可信计算可能是一个相对较好的解决方案。将服务端搭建在可信执行环境所有的内部数据均不出可信执行环境,让外界也很难在实际执行过程中获取到游戏数据。这里的可信执行环境可以是intel的sgx也可以是其他tee实现。

解决数据分发时的链路保密问题

游戏数据分发时,比如服务器要给A发一张牌,那在链路上如何保证这张牌不被别人看到呢?这个可以用A的公钥来保护加密下发,那密文就只有A才能解开其他人均无法识别。并且由于是区块链系统A的公钥就是现成的因此这个功能很容易就能实现。

总结

这里简略的探讨了一下棋牌类游戏在区块链上的实现,给出了用户体验、随机性以及保密性这三个核心的问题的相对可靠的解决方案。当然实际的游戏设计上还会有很多的细节问题,这里就不展开了。


我们是区块链研习社公信节点,致力于做GXChain共识与生态推动者。欢迎大家投票支持,节点名称:chainclub-bp

上一篇 下一篇

猜你喜欢

热点阅读