我们已经在 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. 雷林鹏分享:jQuery EasyUI 数据网格 - 创建页脚摘要
  2. linux页面置换的存储,3.4.4 第二次机会页面置换算法
  3. 数据结构常见算法集锦
  4. 一个卑微的程序员友链
  5. server 2008 服务器不能访问 java项目,Java 8上的SQL Server JDBC错误:驱动程序无法使用安全套接字层(SSL)加密建立到SQL Server的安全连接...
  6. web安全----XSS漏洞之基本原理
  7. JS 判断手机操作系统代码
  8. 11.11 双十一 前端教你一键领取天猫千张优惠券 (领前先想想有没有钱花这些优惠券)...
  9. 我们都在努力做自己,我的编程之路开篇
  10. linux设备驱动归纳总结(三):5.阻塞型IO实现【转】
  11. Android TV开发总结【RecycleView】
  12. 基于c#的IE 代理服务器设置
  13. macos系统中shell脚本权限不足Permission denied的问题
  14. win10无法设置移动热点的一种解决办法
  15. 【转】Java并发编程:并发容器之ConcurrentHashMap
  16. Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\tniuwamp\Apache24\htdo
  17. 《天引》读书笔记——由新月形面积引发的人类长达2000年的探索。
  18. CTF网络安全比赛简介
  19. 【CICC原创】面向全域作战态势感知的战场全息地图
  20. P1498 南蛮图腾 题解

热门文章

  1. Android-支付宝支付
  2. java基础巩固-宇宙第一AiYWM:为了维持生计,架构知识+分+微序幕就此拉开之Docker(Docker概念:容器、镜像、仓库)、操作命令、Docker网络、分层、K8S<->Docker~整起
  3. 网络穿透/视频拉转推平台EasyNTS上云网关管理平台启动无法访问web页面排查
  4. LaTeX—将论文模板的关键词从Index Terms 改为Keywords
  5. Netty学习记录-初步认识Netty及I/O模型
  6. c语言中的字符串结束标志,c语言字符串结束标志是什么_后端开发
  7. 在视频的左上角动态显示帧数、参看帧率
  8. QSlider 拖动滑动条使用valueChanged(int value)信号重复调用槽函数问题解决
  9. 映像租赁系统---SQL语言
  10. consul watch使用详解