鏈上玩剪刀石頭布(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
測試網發佈測試
-
玩家A發起合約,抵押0.001 BSV:tx-init
-
玩家B參與,出“布”,並追抵押A的一半,0.0005 BSV:tx-follow
-
玩家A結算,自己出“石頭”,輸了,玩家B得0.001 BSV:tx-finish
注意事項
玩家A的pubkey一定不能在玩家B參與之前公開。上面測試網Tx沒有嚴格按這個約束,當前部署代碼已作調整,無此問題。