我们可以在 BSV 网络上基于比特承诺方法实现一个公平且不需要第三方的掷硬币游戏。

假设 Alice 和 Bob 决定掷硬币,但他们没有实物硬币,或者他们想通过互联网进行。通过遵循下面这个 BSV 协议,他们可以实现公平的抛硬币。

  1. Alice 和 Bob 各自将 x 个 BSV 锁定在如下所示的智能合约中(注意:此时他们并没有透露自己的秘密数字);
  2. 在新交易里同时提交他们各自的秘密数字,然后对这两个秘密数字进行异或操作,以确定硬币是正面还是反面。如果是正面则 Alice 赢,否则 Bob 赢。获胜者将获得所有 2x 个 BSV 。
contract CoinToss {Ripemd160 alice;Ripemd160 bob;// commitmentsSha256 aliceHash;Sha256 bobHash;public function toss(bytes aliceNonce, bytes bobNonce, int amount, SigHashPreimage txPreimage) {require(Tx.checkPreimage(txPreimage));require(hash256(aliceNonce) == this.aliceHash);require(hash256(bobNonce) == this.bobHash);// last bit of XORbytes head = (aliceNonce ^ bobNonce) & b'0000000000000000000000000000000000000000000000000000000000000001';// head -> Alice wins; tail -> Bob winsRipemd160 winner = head ? this.alice : this.bob;// winner takes allbytes winnerScript = Util.buildPublicKeyHashScript(winner);bytes winnerOutput = Util.buildOutput(winnerScript, amount);require(hash256(winnerOutput) == Util.hashOutputs(txPreimage));}
}

实践考虑

如果当事一方在发现自己失败的情况下拒绝透露其秘密数字,可能还需要采取其他措施改进。例如,可以让失败者拿回其投入的一半 BSV ,而不是让获胜者全部拿走,这样也可以激励失败者提交其秘密数字。

BSV 网络上公平的掷硬币游戏相关推荐

  1. BSV网络上的拍卖合约

    我们在 BSV 网络上设计并实现了一个安全的拍卖合约. 它是公开透明的,每个人都可以参加,竞标结束后出价最高的竞标者将中标. 投标人受其出价的约束,而拍卖人则受拍卖结果的约束. 实现 // Aucti ...

  2. SEGA 将在 L2 Oasys 网络上推出区块链纸牌游戏

    日本游戏和娱乐巨头 SEGA 正在通过第 2 层区块链网络 Oasys 上的新产品进一步涉足区块链游戏. 由日本区块链游戏开发商 double jump.tokyo 开发和运营的 SEGA 授权数字收 ...

  3. 掷一枚硬币,直到连续出现两次正面朝上的时候停止,问掷硬币次数的期望

    import numpy as np l=0 for i in range(1,10001):#实验10000次a=np.random.randint(0,2)b=np.random.randint( ...

  4. 网络上游戏制作相关学习站点的网址

    棋牌类游戏客户端结构分析 编辑 2008-04-18 09:57:00 标签:游戏大厅 结构 it 在这里所讨论的棋牌类游戏并不是所有的平台类型,而是通常的表现形式即游戏广场-游戏大厅-游戏房间的类型 ...

  5. 玩eos上的掷骰子游戏---dice智能合约

    dice智能合约的操作步骤,在eos的github上有,这里不再赘述,这里主要讲dice智能合约的实现. dice在中文中是骰子.聪明的你已经猜到了,这可能是一个掷骰子游戏,没错,这就是一个双人掷骰子 ...

  6. 超好玩的硬币游戏,你会玩吗?

    出门在外,恰逢不巧,你和朋友被困住了,干点什么呢.来几局三国杀?是个不错的提议,但问题是你带牌了吗,没牌怎么打?死理性派想说的是,会玩的孩子怎么不能玩!凑几个硬币,随随便便就能玩一整天.不得不说,硬币 ...

  7. 超好玩硬币游戏,你都会玩吗?

    出门在外,恰逢不巧,你和朋友被困住了,干点什么呢.来几局三国杀?是个不错的提议,但问题是你带牌了吗,没牌怎么打?死理性派想说的是,会玩的孩子怎么不能玩!凑几个硬币,随随便便就能玩一整天.不得不说,硬币 ...

  8. 硬币游戏 Project Euler 232

    原帖:http://hi.baidu.com/atyuwen/blog/item/160bd024531e3034c995591d.html Project Euler上最近的题目都还比较意思,来看看 ...

  9. 投色子抽奖游戏 html,使用jQuery实现的掷色子游戏动画效果

    实现原理:当色子掷出后,通过jQuery的animate()函数改变色子位移,中间加入延时效果,并变换色子背景,最终动画运行到随机产生的点数时停止,并显示掷出的点数.其实就是动画过程加入多个不同图片的 ...

最新文章

  1. Redis的7000字笔记总结,超详细!
  2. Openstack Nova 源码分析 — Create instances (nova-conductor阶段)
  3. HDU-1978 How many ways 动态规划
  4. 数据产品-指标体系和埋点设计
  5. 理解CSRF(跨站请求伪造)
  6. 小战Java笔记_SE_Identifier(标识符)
  7. Web前端开发技术包括哪些?
  8. 我的实用小软件(持续更新)
  9. 三级网络技术通关指南
  10. linux安装nebula
  11. BERT模型—2.BERT模型预训练与微调
  12. request获取登录用户名
  13. 3dmax:3dmax三维VR渲染设置之摄像机设置案例应用之自由摄影打造动画效果之图文教程
  14. 【oracle11g,11】redo日志文件2 :日志恢复 (重点)
  15. java money_Java Money与Currency API浅谈
  16. H3C CLI基础笔记(Qos)
  17. Open3D点云库 C++学习笔记
  18. 设计一个Circle类
  19. PP材料是干嘛用的?
  20. 浅谈国产ERP的“横纵竖”三向发展态势

热门文章

  1. 2021-10-29
  2. 教孩子学python 豆瓣_你是如何自学 Python 的?
  3. 张小龙近4年微信公开课演讲视频
  4. Python——正则表达式语法与实践
  5. 关于用OC创建的项目调用swift代码
  6. 非计算机专业可以考软考吗?赶紧了解
  7. 树的前序,中序,后序的相互转换
  8. 【无线】锐捷无线默认地址密码大全_马立杰_新浪博客
  9. 哪些人需要做心脏超声
  10. iOS 去除字符串中的空格或多余空格(适合英文单词)