bsv链上双人玩剪刀石头布

链上玩剪刀石头布(Rock Paper Scissors)

无需依赖外部Oracle,无需依赖可信第三方,我们即可以在Bitcoin SV区块链上进行双人剪刀石头布游戏。流程如下:

  1. 玩家A发起合约,压2bsv,并附带公开hash(a | pubkey)。a是R、P、S之一;pubkey 是A的未公开的公钥。

  2. 玩家B花费如上utxo,追加1bsv,并公开b。b是R、P、S之一。

  3. A发起结算,合约需验证A的公钥和签名:

    获胜规则为:P > R > S > P,如果相同则平局。

   if a > b :
      A win,得3bsv
      B lose, 得0bsv
   else if a < b:
      A lose, 得1bsv
      B win, 得2bsv
   else:
      A draw, 得2bsv
      B draw, 得1bsv

实现

玩家A可以发起抵押任意额度的bsv到合约,玩家B当前只需追加1半额度。但为了提高玩家A结算的积极性,可以适当降低玩家B的抵押比例。

合约源码:rps.scrypt
部署代码:rps.js

测试网发布测试

  1. 玩家A发起合约,抵押0.001 BSV:tx-init

  2. 玩家B参与,出“布”,并追抵押A的一半,0.0005 BSV:tx-follow

  3. 玩家A结算,自己出“石头”,输了,玩家B得0.001 BSV:tx-finish

注意事项

玩家A的pubkey一定不能在玩家B参与之前公开。上面测试网Tx没有严格按这个约束,当前部署代码已作调整,无此问题。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章