链上玩剪刀石头布(Rock Paper Scissors)
无需依赖外部Oracle,无需依赖可信第三方,我们即可以在Bitcoin SV区块链上进行双人剪刀石头布游戏。流程如下:
-
玩家A发起合约,压2bsv,并附带公开hash(a | pubkey)。a是R、P、S之一;pubkey 是A的未公开的公钥。
-
玩家B花费如上utxo,追加1bsv,并公开b。b是R、P、S之一。
-
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