2613 large

基于以太坊 (智能合约和 Whisper) 的棋牌类游戏的开发思路

thishe · 于 发布 · 最后由 xnbwang回复 · 308 次阅读

角色
1. 庄家。庄家负责发牌(开局),校验玩家的出牌正确性,游戏结束后的奖罚计算,并调用合约结算。庄家收取服务费,其服务费率定义在结算合约里面。
2. 合约。合约负责入局(玩家交筹码和押金),结束后的结算。
3. 玩家。玩家通过合约入局,加入筹码,结算;通过whisper作为P2P通信通道。
流程
1, 庄家向合约打入押金(USDT或ETH等)。
2, 玩家A调用合约,押注自己的筹码(和押金),输入一个随机数S1的Hash值,得到一个桌号ZH001;
3, 玩家B(和玩家C、玩家D)调用合约,押注自己的筹码,输入一个随机数S2的Hash值,输入桌号ZH001加入这个桌子(局)。
4, 玩家人数够了满足开局条件后,合约发布事件,通知(订阅事件)玩家ABCD和庄家,并同时冻结玩家和庄家的押金。
5, 玩家ABCD向庄家发送(Whisper)随机数对应的原文,庄家验证原文合法性。
6, 庄家根据原文生成玩家ABCD的牌,把牌的Hash值发给合约,然后分发(Whisper)给玩家,玩家开始出牌。
7, 玩家A出牌,通知庄家和其他玩家BCD,庄家验证出牌的正确性。
8, 玩家出牌结束
9, 玩家可以把原文发给(Whisper)各方进行发牌验证,调用合约验证(玩家ABCD输入的原文构成的发牌Hash,要和庄家输入的一样)通过。
10, 庄家调用合约结算,把筹码重新分配给玩家ABCD和庄家自己。
扩展流程1
5.1,庄家验证玩家A的输入错误,调用合约扣除A的20%的押金,庄家仍然收取自己的手续费,此局结束。
扩展流程2
7.1,庄家验证玩家A出牌不正确,当作犯规处理,让玩家BCD瓜分玩家A的筹码(和押金),庄家仍然收取自己的手续费。
扩展流程3
8.1,玩家A超时,当作犯规处理,,让玩家BCD瓜分玩家A的筹码(和押金),庄家仍然收取自己的手续费。
扩展流程4
9.1,玩家调用合约,输入原文,合约验证原文正确性,但庄家输入的发牌Hash不正确,扣除庄家的押金分发给玩家ABCD。
9.1.1,如果玩家输入的原文不正确,扣除玩家的押金给庄家和其他玩家瓜分。
说明
1, 玩家的牌是各自手上的随机数生成的,是可以计算的,这样就避免了庄家发牌的不公。通过在合约保存Hash的方式来验证原文。
2, 玩家的牌是可以验证的。在一局结束后,玩家把原文输入,庄家把发牌的Hash(提前)输入,双方共同验证。如果有一方输入错误,那就是违规。
3, 庄家仍然是一个中心化的机构,仍然存玩家和庄家勾结、玩家和玩家勾结的可能。但只要玩家不和庄家勾结,也不和玩家勾结,庄家和玩家是无法作恶的。但庄家可以制造虚拟玩家,例如一局三家都是庄家的虚拟玩家,三家都是明牌,三打一就很容易赢了。但现实情况是很多赌博都是熟人玩,不和陌生人玩的。
4, 和现有棋牌类游戏的差别(优劣势):
a) 使用数字资产做筹码,全球流通,解决了传统游戏要走第三方支付渠道的痛点。
b) 相对更公平。极大的限制了庄家的权利,庄家很难坐黑庄。
c) 庄家跑路的可能性极低,毕竟庄家不控制钱,而是交由智能合约控制的。
d) 无法封锁。不需要中心化的网站,全部走区块链的加密P2P网络,能上网就能玩游戏。
e) 各方都可以匿名。
f) 现阶段区块链网络性能还不高,常常堵塞,导致这种游戏的参与者不能太多。要等以太坊2.0上线后,此类游戏才会大规模爆发。

最后说明:本人并未实现,但技术测试是可以通过的。

  • 20162 large
    xnbwang

    你说的很好,有需要开发区块链系统的朋友联系我