我们已经在 BSV 上实现了 规则 110。类似于二维元胞自动机 (CA: cellular automata) 康威生命游戏,一维 CA 规则 110 也是图灵完备的。通过推论,我们再次证明了比特币是图灵完备的。

规则 110

Rule 110 元胞自动机是一维基本 CA,其中 0 和 1 的线性模式根据一组简单的规则演化。模式中的一个点在新一代中是 0 还是 1 取决于它的当前值和它的两个邻居的值。规则 110 具有以下规则集:

“规则110”的名称是基于该规则可以概括为二进制序列01101110,对应十进制值是110。

图灵完备

尽管它很简单,但规则 110 是图灵完备的,正如在基本元胞自动机中的普遍性(Cook 2004)中所证明的那样。这意味着,原则上,它可以模拟任何计算或计算机程序。规则 110 可以说是最简单的已知图灵完备系统。

实现

类似实现康威生命游戏,我们已经实现了规则 110。

contract rule110 {static const int N = 5; //size of boardstatic const int N2 = 3; //size of boardstatic bytes LIVE = b'01';static bytes DEAD = b'00';@statebytes board;public function play(int amount, SigHashPreimage txPreimage) {this.board = this.computeNewBoard(this.board);require(this.propagateState(txPreimage, amount));}function computeNewBoard(bytes board) : bytes {bytes res = b'';res += DEAD;loop (N2) : i {res += this.newState(board[i : i + 3]);}res += DEAD;return res;}function newState(bytes arg) : bytes {/*Current pattern           111 110 101 100 011 010 001 000New state for center cell     0   1   1  0    1   1   1   0*/bytes a = arg[0 : 1];bytes b = arg[1 : 2];bytes c = arg[2 : 3];bytes res = LIVE;if (a == LIVE && b == LIVE && c == LIVE) {res = DEAD;}if (a == LIVE && b == DEAD && c == DEAD) {res = DEAD;}if (a == DEAD && b == DEAD && c == DEAD) {res = DEAD;}return res;}function propagateState(SigHashPreimage txPreimage, int value) : bool {SigHashType sigHashType = SigHash.ANYONECANPAY | SigHash.SINGLE | SigHash.FORKID;// this ensures the preimage is for the current txrequire(Tx.checkPreimageSigHashType(txPreimage, sigHashType));bytes outputScript = this.getStateScript();bytes output = Utils.buildOutput(outputScript, value);return hash256(output) == SigHash.hashOutputs(txPreimage);}
}

规则 110 合约

BSV 上的图灵完备的“规则110”相关推荐

  1. python 图灵完备_微软:进化版Excel已是图灵完备的语言

    自1980年以来,Microsoft Excel重塑了人们组织.分析和可视化数据的方式.它是世界上使用最广泛的编程语言.C,C ++,C#,Java和Python的程序员加起来,人数也没有Excel的 ...

  2. python 图灵完备_有什么配置语言是图灵完备的吗?

    34 235 天前   3 这个问题很有意思,因为我前两个月看到了 #18 提到的 Dhall 的作者的一篇博客: http://www.haskellforall.com/2020/01/why-d ...

  3. 弘辽科技:淘宝宝贝上下架有哪些规则?该如何优化?

    原标题<弘辽科技:淘宝宝贝上下架有哪些规则?该如何优化?> 在淘宝开店成功的卖家们肯定少不了要上下架商品来维持消费者的新鲜感,但是上下架商品是不是可以按自己想法随意来呢?其实淘宝平台对于商 ...

  4. BSV 上的 zk-SNARKs

    在此之前,我们已经使用零知识证明(ZKP)证明了一个人知道一些数学秘密,而无需透露秘密本身. 秘密知识包括: 与 零知识谜题中的公钥对应的私钥 零知识密钥声明证明 中公共摘要的哈希原像 基于零知识证明 ...

  5. BSV上的高效 zk-SNARK:技术解释

    最近,我们在 sCrypt 中实现了 zk-SNARKs,并在 BSV 上运行它.更具体地说,我们实现了 Groth16 算法的验证器,它允许直接在链上验证零知识证明.本文深入探讨了一些细节,阐明了如 ...

  6. BSV 上的 Schnorr 签名

    我们已经在 BSV 上实现了 Schnorr 签名.这是第一个也是唯一一个已知的实现,没有对原始协议进行任何更改¹. 一笔交易一个签名 Schnorr 是一种可以用于替代比特币签名当前使用的 ECDS ...

  7. BSV 上的点对点结算衍生品:远期合约

    远期合约简介 远期合约是两方在特定未来时间以预定价格买卖资产的衍生工具.它是一种非常常见的对冲波动性的工具.因此,使用 USD 远期合约可以对冲 USD 兑 BSV 汇率的波动. 远期合约的收益图 例 ...

  8. 在 BSV 上创建你的第一个零知识证明程序

    ZoKrates 是 zkSNARKs 的工具箱,隐藏了零知识证明 (ZKP) 固有的显着复杂性.它为开发人员提供了一种类似于 python 的高级语言来编写他们想要证明的计算问题. 我们扩展了它,使 ...

  9. wsus修改端口80重置服务器节点,windows2008R2上的wsus运行规则报错,要求"重置服务器节点"...

    请教高手,我每次在windows2008R2上的wsus运行规则总是报错,记得刚开始部署的时候正常. 也学习了这个帖子: WSUS连接错误  https://social.technet.micros ...

最新文章

  1. 使用 Laradock 10 分钟部署 Laravel 或 Notadd 环境
  2. numpy matplotlib 柱状图
  3. 前端跨域请求get_前端跨域请求jsonp实现
  4. oracle tns 连接关闭,ORA-12537 TNS:连接关闭
  5. 一个android工程生成两个aar,android studio生成aar包并在其他工程引用aar包(示例代码)...
  6. python-描述符的操作
  7. java程序设计自考_java程序设计自考试题
  8. STM32F103定时器输出频率测试
  9. 给一些技术类的链接(转)
  10. php poedit怎么debug,php – 如何使PoEdit正确解析自定义“ngettext”实现?
  11. 机械键盘POKER2的硬编程
  12. springboot Junit单元测试之坑--@SpringBootTest注解无法加载src/main/resources目录下资源文件
  13. 网站被挂马的处理办法以及预防措施
  14. 20年,中国互联网主流产品的演变和逻辑
  15. 《重构--改善既有代码的设计》--代码的坏味道(3)
  16. Vue + MathLive 实现数学公式可编辑
  17. python02 函数 等额本金贷款
  18. 小程序 timestamp_通过构建Timestamp微服务应用程序来学习Node.js
  19. python画点连线_python matplotlib 在指定的两个点之间连线方法
  20. Arthas(阿尔萨斯) 能为你做什么

热门文章

  1. Linux网络IO模型及JAVA中IO模型
  2. python 二叉树的序列化和反序列化
  3. 百度发布2019年Q1季度财报,向海龙辞职
  4. 输入法中的全角与半角
  5. 凯视佳工业相机白平衡——使用和移植白平衡示例程序
  6. vue--elementui中修改el-input样式
  7. Postman实现接口测试(附项目实战)
  8. 利用libcurl获取新浪股票接口
  9. 初窥Quarts2D(二)
  10. easyui edatagrid saveRow保存刷新