1. Home
  2. Docs
  3. EOS DApp合约开发之DICE游戏
  4. 第五课:DICE游戏项目——架构设计

第五课:DICE游戏项目——架构设计

本次项目的前端已经开发完成,我们只需要开发合约、后端即可。所以我们开发的前端demo只要能和后端、合约正常交互即可。

合约与后端开发测试完成后,使用完整的React前端与之交互。

合约

合约将会有三个,它们相互独立,且独立部署运行:

  • dice:掷骰子游戏
  • dicetoken:自己发行的代币JXB,可用于玩家押注、质押(获取分红)、通证经济模型设计
  • pool:奖池,奖励玩家,用于社区通证经济模型激励

另外,在开发的时候,我们使用的EOS本地节点,须我们自己发行eos,所以还会用到eosio.token合约。

NodeJS后端

NodeJS后端也会有三个项目,它们相互独立:

  • diceContract:所有的合约都在该项目中开发,另外包含部署脚本、测试脚本等。
  • webServer:专门与前端交互,支持RESTful API、socket.io,用于前端查询数据、后端主动推送合约新数据。
  • diceServer:专门与合约交互,主要是调用合约开奖方法。

独立webServer、diceServer这两个项目的目的是因为diceServer中需要合约账号的私钥签名开奖action,为了私钥安全,使它不与前端交互,因此与前端交互的功能独立到webServer项目中。

架构设计

下面介绍合约内部的调用关系,以及它们如何与前端、后端交互。

CCC1614D-284E-45BB-B6B3-3FC9D66EA438

  1. Web前端:使用Scatter API与调用Token合约转账,转给DICE合约账号,并在memo中说明玩家押注的数、推荐者等。
  2. DICE合约:监听转账通知,若是玩家押注转的账,则记录数据到链上数据库。
  3. NodeJS后端:使用openssl随机生成种子,使用EOSJS调用DICE合约开奖action。
  4. DICE合约:开奖action中根据种子生成随机数,作为玩家的开奖号码,并记录到链上数据库公开。另外,将押注额的1.5%作为利润转给分红池子合约账号。
  5. 分红合约:监听到转账通知时,给玩家的推荐者、VIP分红,增加分红池、英雄榜分红金额。另外调用Token合约挖矿发行代币的action。
  6. Token合约:挖矿发行代币的action,根据发行量计算挖矿所得金额,会逐渐减半。另外当挖矿的代币达到一定数量后,逐步解锁项目方的预挖代币。
  7. Web前端:使用Socket.IO订阅服务。
  8. NodeJS后端:查询链上最新的玩家押注数据,使用Socket.IO推送给前端显示。
Was this article helpful to you? Yes No

How can we help?