如何在比特币系统内创造人工生命

请添加图片描述
信息来源:coingeek.com


自2015年以来,关于比特币能否进行复杂计算以及比特币是否“图灵完备”的争论一直在持续。不幸的是,现在存在着一种流传甚广的谬论,有人说比特币并非图灵完备的,它不能像以太坊区块链那样进行复杂的计算。在本文中,我们将对比特币图灵完备性的历史进行考察,然后我们将创造出可在比特币系统内永生的人工生命。

 

比特币图灵完备性的历史

2015年,Craig S. Wright博士首次被比特币世界所了解,当时他参加了一场圆桌讨论,身份是“前学者”,从事着“无人知晓的商业研究”。他在自我介绍时说他自己是“很久以前”就挖过比特币的人,对于一个当时还不为业内人士所熟知的人来说,这是一段非常神秘的登场介绍。与他一起参加圆桌讨论的嘉宾可以说是星光熠熠,其中有美国铸币局前局长Ed Moy、新自由美元项目创始人Joseph Vaughn Perling、比特币早期投资者Trace Meyer以及Bit Gold创始人Nick Szabo。

对于任何有兴趣回顾比特币发展史的人来说,这是一场不可错过的圆桌讨论。在讨论开始后不久,Wright博士就针对比特币提出了一个令人惊讶的说法,让与会专家都感到困惑不已。他声称,比特币和比特币脚本,即由中本聪创建的编程语言,能够进行复杂的计算,并且是图灵完备的。

计算系统的图灵完备性是指该系统能够解决任何计算层面的问题。用计算机科学中更简单的术语来说,如果一个系统可以“循环”,那么它就是图灵完备的。由于比特币脚本是否能够进行循环并非一眼就能看出来,因此大众普遍认为比特币不是一个图灵完备的系统。为了理解Wright博士当时的大胆主张,我们必须回顾“区块链”“加密货币”的现代历史。

2013年,Vitalik Buterin发布了题为《以太坊:下一代智能合约和去中心化应用平台》的白皮书,世界首次了解到了以太坊。Buterin提到了以太坊的必要性,因为“在比特币中的脚本语言实施方案面临多项重大限制”,首当其冲的便是“缺乏图灵完备性”。此后不久,在以太坊白皮书中,以太坊被称为“一种内置了图灵完备编程语言的区块链,允许任何人编写智能合约和去中心化应用。”

到2015年展开上述圆桌讨论时,比特币仍被视为功能严重受限的区块链,以太坊则被视为可用于复杂智能合约的区块链。“比特币具有局限性”这种观念导致了“第二代”和“第三代”区块链这类更加荒谬的构想的诞生。这种做法暗示着,虽然比特币是一个很好的起点,但在创造一个可以处理所有交易的全球级区块链的道路上,比特币只是迈出了第一步。

Nick Szabo显然对Craig的说法感到困惑,他立即对Wright博士的说法做出了回应。他表示,Wright所说的东西“略为深奥”了,如果比特币“不是图灵完备的,那么无论它能否处理部分的循环,它也不是像以太坊那样的通用编程语言。”详情请见后附的视频。

圆桌讨论没有再就这一话题进行更深入的交流,我们在接下来的几年里都没听说过比特币有能力进行复杂计算。碰巧的是,我们又一次从Wright博士本人那里听到了这种说法。

到2017年7月,比特币处于大分叉的前夜。有一部分人正确认识到了的比特币规模是被人为限制了,这些人聚集在阿纳姆(Arnhem),召开了“The Future of Bitcoin”大会,就比特币的前进之路进行着讨论。Wright博士原本未被安排在这次会议上发言,但幸运的是,比特币基金会的前董事Jon Matonis放弃了自己的发言时间,选择了让一位他认为是中本聪的人代替他发言。在被认为是比特币的创造者之后,这算得上是Wright博士的首次公开露面。他发表了一场充满激情的演讲,讲述了他对比特币未来几十年的展望。

演讲第26分钟,一张标题为“图灵完备性”的幻灯片弹了出来。他叹了口气说:“关于这个问题,我真是不想再说了。你们猜怎么着?你们都错了,它是(图灵完备的)”。

 

当他在讨论比特币的脚本系统如何构成了一种名为“判定机(decider)”的特殊图灵机的基础时,他翻到了一张幻灯片,上面展示了一个有趣的图案,数学家们马上就能认出这就是Wolfram 110元胞自动机:

元胞自动机是由Stanislaw Ulam和John Von Nuemann发现的,这是一个引人入胜的研究领域,与数学家Stephen Wolfram的关系最大,他所从事的是一维元胞自动机的系统研究。我鼓励你去了解一下这个迷人的研究领域,但对于元胞自动机,我们有一种简单的思考方式:给定一个初始状态和一个简单的规则集,元胞自动机可以进化出复杂的系统。在20世纪70年代,二维元胞自动机康威《生命游戏(Conway’s Game of Life)》吸引了学术领域之外人士的兴趣,从这时开始,元胞自动机开始普及开来。我们还会再次谈到康威《生命游戏》,但需要注意的是,Wolfram在20世纪80年代开始了元胞自动机的研究,并在这些一维元胞自动机,或者说初级元胞自动机中发现了复杂的行为。

由Wolfram发现的“规则110(Rule 110)”是一种初级元胞自动机,它展现出了非常有趣的行为,并且观察者很难定义这些行为是稳定的还是混沌的。“规则110”已被认为是图灵完备的,这意味着任何计算或计算机程序都可以用这种自动机来模拟。

Wright博士称“规则110”为“最简单的图灵完备系统”,并在阿纳姆的演讲中揭示了一项令人震惊的事实。“这是在比特币上运行的……我们在比特币上运行了粒子群优化(PSO)。”他非常遗憾地表示,当时比特币高昂的手续费扼杀了这个研究项目。“我们在比特币上运行了第一段可自我演化的代码,持续了两年。”他接着说道,随后再次提到BTC链的高昂费用扼杀了这个项目。

这本应该是一条更加劲爆的新闻,因为这个项目证明了,在比特币中,图灵完备计算是可能的。然而,出于某种原因,所谓的区块链行业对这种观点置之不理。在2017年的加密货币热潮中,大众媒体市场反复强调以太坊是“可编程版”的比特币。

2018年3月,Clemens Ley第一个站出来公开支持Wright博士的说法,并在东京中本聪愿景大会上做了题为“为什么比特币是图灵完备”的演讲。Clemens的专业是自动机理论,他独立撰写了一篇与这一论点相关的证明,并给出了证明的相关解释。他在演讲开始时指出,“许多人认为在比特币中不可能实现的事情实际上是可以做到的。”随后他进行了实际的演示,展示了如何将区块链用作图灵完备计算所需的纸带。在撰写本文时,他的演讲仅获得了3479次观看。对于任何怀疑比特币能否实现图灵完备计算的人而言,这段演讲都值得仔细研究。同样是在2017年,Wright博士的说法得到了另一位独立研究者Konstantinos Sgantzos的验证,他发表了一篇论文,题为《在区块链上实现丘奇-图灵-多伊奇原理机器》。

比特币的创造者在试图向世界宣传自己的发明时竟然被视为了异教徒,这真是讽刺。虽然我曾公开对此表示过不解,但我承认,在Wright博士所创造的这个领域中,他确实颇具争议。尽管我个人非常感谢他花了无数时间在公共论坛上向我和其他人传授与比特币本质相关的知识,但很少有人去愿意验证他的说法。虽然我们可以坐等更多学者来验证Wright博士的说法,但也有一些人愿意亲自进行验证。

《生命游戏》

我有幸在2019年旧金山的BSV聚会活动上见到了刘晓晖。我们寒暄了几句,简单地探讨了一下我们希望用比特币来解决的、硅谷公司内在的诸多问题。

我回到家后,收到了晓晖给我发的一条消息,其中是他的sCrypt项目的链接。他说他已经用C++构建了一个功能完整的比特币脚本编译器,就好像这个项目对他来说根本不费吹灰之力一样。晓晖是我在比特币领域中最喜欢的创新者之一,他一直在使用普通的C++语言向其他程序员展示比特币脚本的可能性。

想要验证Wright博士的观点说来也简单,那就是使用比特币脚本来复制一个图灵完备系统,比如说前面提到的规则110或者康威生命游戏。晓晖用C++发布了康威《生命游戏》的代码模板,这让我们的工作轻松了许多。生命游戏是一种在二维网格上进行的元胞自动机。

生命游戏相对来说是比较简单的,由四条规则组成。前三条规则适用于黄色活细胞,最后一条规则适用于灰色死细胞:

1.周围只有一个邻居或没有邻居的活细胞都会死亡,就像是孤独而终一样。

 2.周围有四个或更多邻居的活细胞都会死亡,就如同人口过剩一样。

3.周围有两到三个邻居的细胞可以继续存活。

 4.周围恰好有三个邻居的死细胞可以复活。

 你可以用这个小程序玩一玩《生命游戏》。生命游戏对于学者和普通观察者来说都很有趣,因为只需基于这个简单的规则集进行初始配置,就可以创建出各种复杂的模式和“生命形式”。“积木”、“蜂箱”、“独木舟”等等都是可以在《生命游戏》中存在的静态物体。我们甚至也能看到像“滑翔机枪”一样的动态“生命”的出现这个元胞自动机中的世界非常奇特,你越深入了解,就会越觉得它越奇特。

通过在区块链上创建一个初始配置,我们就可以观察它的演变方式。由于康威《生命游戏》是图灵完备的,如果我们可以在比特币区块链上复制这款游戏,那么我们就可以切实证明,比特币实际上在所有方面都是图灵完备的。如果你想知道为何比特币上未曾有过这样的项目,你只需快速看一下比特币脚本中的代码,就会恍然大悟了。这是一个体积相当大的脚本,在BTC链上是不可能实现的。因为BSV是唯一一个实现了中本聪原始设计的区块链,这个项目只有在BSV上才有实现的可能。

我们决定对此进行测试。我们能让康威《生命游戏》存在于区块链之上吗?

是的,我们可以!在这里,我们公布了4×4棋盘上康威《生命游戏》的初始配置。我们的起始配置是3个细胞:

看过上述链接中交易脚本的人会发现,我们使用了一个看起来像这样的游戏棋盘:

00000000

00000100

00010100

00000000

你可以查看这个脚本的脚本哈希,了解一下游戏二次迭代的情况。根据《生命游戏》的规则,在这笔交易中,我们最终会得到一种名为方块的“静态物体

或者你也只可以使用下面这种棋盘:

00000000

00010100

00010100

00000000

在游戏中迭代5次以上,便可在《生命游戏》中保存所见到的这种稳态静物。我们在区块链上创造了永恒的生命!阻止我们创造更复杂系统的唯一原因是所涉及到的经济因素。中本聪的天才之处在于将经济学纳入了这个系统!只要有资金支持,我们的游戏就能持续进行下去。

我们可以看到,比特币内部是能够运行一个图灵完备的系统的,这证明了比特币本身就是图灵完备的。只要再多做一点工作,我们就可以创建一个互动生命游戏棋盘,玩家可以与之互动,并为其注资以维持其生命活力。

这些有什么意义呢?首先,这完全否定了试图贬低比特币的复杂计算能力的人的观点。在BTC上,他们删除了必需的操作码、限制了交易和脚本的规模以及区块的大小,进而故意削弱了比特币的计算能力。因为BTC支持者的误导性言论,将他们的区块链称为比特币,所以人们普遍认为比特币不能进行复杂的计算。但对于BSV生态中的许多人来说,这并非什么出乎意料的事情,这也证明了Craig Wright博士的正确性。

Wright博士是比特币的创造者,这一点不容否认。他曾多次对比特币的本质做出过令人难以置信的断言,而这些断言后来都被证明是正确的。无论是比特币网络拓扑结构的小世界网络的性质、保护网络安全的经济激励因素,还是系统本身的图灵完备性,Wright博士一再证明,对于自己所发明的技术,他是不折不扣的专家。

一方面,以太坊无法实施任何真正有意义的扩容举措;而在另一方面,BSV却正在快速向TB级、甚至更大体积的区块扩容。比特币具备以太坊的所有功能,但比特币同时还拥有中本聪设想中的大规模可扩容性。

Craig Wright在比特币的图灵完备性问题上的正确性得到了证明这件事对我们Britevue来说并不奇怪。我们在基于比特币构建未来的线上评论应用时,这个复杂的系统就需要比特币的智能合约和通证化功能,但这两项都是之前被认为在比特币中不可能实现的功能。

我要向刘晓晖表示感谢,感谢他在部署《生命游戏》合约方面提供的帮助,同时也要大力感谢Dylan Murray为比特币注入生命。


目前,全球已有超过400个项目构建于BSV区块链之上。凭借坚如磐石的协议及超高的网络性能,BSV生态系统迅猛发展,我们期待未来出现更多前所未有的商业应用。

  • 对BSV区块链开发感兴趣的朋友,可以前往我们的中文开发者专区:BSV区块链

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/15063.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第四章 使用Maven:IDEA环境

1、创建 Project2、开启自动导入 TIP 各个 IDEA 不同版本在具体操作方面存在一定差异,这里我们以 2019.3.3 版本为例进行演示。其它版本大家灵活变通即可。 第一节 创建父工程 创建 Project 开启自动导入 创建 Project 后,IDEA 会自动弹出下面提示…

ROS学习5:ROS常用组件

【Autolabor初级教程】ROS机器人入门 1. TF 坐标变换 背景 现有一移动式机器人底盘,在底盘上安装了一雷达,雷达相对于底盘的偏移量已知,现雷达检测到一障碍物信息,获取到坐标分别为(x,y,z),该坐标是以雷达为参考系的…

快速下载VScode并配置Python运行环境【详细教程】

快速下载VScode并配置Python运行环境【详细教程】 博主:命运之光 目录 快速下载VScode并配置Python运行环境【详细教程】前言下载vscode第一步vscode官网下载第二步点击下载![请添加图片描述](https://img-blog.csdnimg.cn/1d76c427314b4ddcbd350e0a7e5449d5.png)第…

数据湖Iceberg-存储结构(2)

文章目录 存储结构数据文件 data files表快照 Snapshot清单列表 Manifest list清单文件 Manifest file 数据湖Iceberg-简介(1) 数据湖Iceberg-存储结构(2) 数据湖Iceberg-Hive集成Iceberg(3) 数据湖Iceberg-SparkSQL集成(4) 数据湖Iceberg-FlinkSQL集成(5) 数据湖Iceberg-Flink…

【移动端网页布局】流式布局案例 ① ( 视口标签设置 | CSS 样式文件设置 | 布局宽度设置 | 设置最大宽度 | 设置最小宽度 )

文章目录 一、视口标签设置二、CSS 样式文件设置三、布局宽度设置1、设置布局宽度2、设置布局最大宽度3、设置布局最小宽度4、查看网页最大最小宽度5、布局宽度设置 四、代码示例1、主界面标签2、CSS 布局设置 一、视口标签设置 参考 【移动端网页布局】移动端网页布局基础概念…

第三章 使用 Maven:命令行环境

第一节 实验一:根据坐标创建 Maven 工程 Maven 核心概念:坐标 ①数学中的坐标 使用 x、y、z 三个**『向量』作为空间的坐标系,可以在『空间』中唯一的定位到一个『点』**。 ②Maven中的坐标 [1]向量说明 使用三个**『向量』在『Maven的仓…

02_Lock锁

首先看一下JUC的重磅武器——锁(Lock) 相比同步锁,JUC包中的Lock锁的功能更加强大,它提供了各种各样的锁(公平锁,非公平锁,共享锁,独占锁……),所以使用起来…

day6 socket套接字及TCP的实现框架

socket套接字 Berkeley UNIX 操作系统定义了一种API它又称为套接字接口(socket interface); socket作用: socket常见API介绍 /*创建套接字*/ int socket(int domain, int type, int protocol); /*绑定通信结构体*/ int bind(int sockfd, const, struc…

界面控件DevExtreme使用指南 - 折叠组件快速入门(二)

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序,该套件附带功能齐…

Spring Boot的日志文件

目录 日志的作用 日志的打印 常见的日志框架 自定义的日志打印 为什么不用sout来打印日志 Spring Boot日志打印 1.得到日志对象 2.使用日志对象提供的方法打印日志 日志级别 日志级别的顺序 日志级别的设置 日志持久化 配置日志文件的保存路径 配置日志文件的文件…

用扩展方法来实现EventTrigger中事件的异步等待

一、什么是扩展方法? 扩展方法是一种C#语言提供的功能,允许我们向现有类型添加新的方法,而无需修改类型的源代码。扩展方法的优缺点如下: 二、它有什么优点? 1、不需要修改源类型的代码:使用扩展方法可以…

Vue 手搓轮播效果

tiptop: 为啥需要写这个功能,因为我遇到了每个轮播层内要放3个左右的商品块,如果使用element自带的轮播就需要将一维数组切成二维数组,导致处理一些情况下就会变得很麻烦,当然那种我也写了如果你们有需要,在下方留言我…

使用chatGPT开发获取格点天气数据

1. 格点天气 1.1. 格点天气 以经纬度为基准的全球高精度、公里级、格点化天气预报产品,包括任意经纬度的实时天气和天气预报。其中,任意坐标的高精度天气,精确到3-5公里范围,包括:温度、湿度、大气压、天气状况、风力…

信息化发展

信息系统是:管理模型、信息处理模型和系统实现条件结合的 信息系统生命周期: 可行性分析与项目开发计划 需求分析 概要设计 详细设计 编码 测试 可以简化为: 系统规划:现行情况的分析,可行性研究报告 -> 设计任务…

Docker安装运行Nginx容器(纯步骤)

Docker安装Nginx容器并运行 本文章只有步骤,没有原理解释,只做平时学习提示。提前说明:由于nginx里的配置文件比较多,所以本文章不对此配置文件解释而且会有一些小问题,这个你酌情操作,但不影响你nginx容器…

数据库课设--基于Python+MySQL的餐厅点餐系统

文章目录 一、系统需求分析二、系统设计1. 功能结构设计2、概念设计2.2.1 bill_food表E-R图2.2.2 bills表E-R图2.2.3 categories E-R图2.2.4 discounts表 E-R图2.2.5 emp表E-R图2.2.6 food 表E-R图2.2.7 member表E-R图2.2.8 member_point_bill表E-R图2.2.9 servers表E-R图2.2.1…

最常用的从A到Z的Linux命令,真的很好记,三分钟刷完!

Linux的命令行是一个非常强大的工具。如果你知道如何利用Linux命令,你可以轻松地在Linux系统中执行各种任务。在这篇文章中,我们将介绍从A到Z的Linux命令。 alias alias命令允许你为常用的命令设置一个短的别名,以节省时间和减少敲击。例如&…

力扣,合并石头最低成本算法题

1:这个题有题解,自己可以去看力扣,合并石头 2:网上也有视频自己去看视频讲解 3:下面我自己的一些理解 4:原需求: 5:代码:使用贪心算法和最小堆来求解: im…

第九章 子查询

文章目录 前言一、.需求分析与问题解决1 、实际问题2 、子查询的基本使用3 、子查询的分类 二、单行子查询1、单行比较操作符2、代码示例3、 HAVING 中的子查询4、CASE中的子查询5、 子查询中的空值问题6、非法使用子查询 三、多行子查询1、 多行比较操作符2、代码示例3 、空值…

这可能是你看过最详细的Java集合篇【二】—— LinkedList

文章目录 LinkedList继承关系数据结构变量构造方法添加元素相关方法查找元素相关方法删除元素相关方法清空方法遍历方法其它方法常见面试题 LinkedList LinkedList底层数据结构是双向链表。链表数据结构的特点是每个元素分配的空间不必连续、插入和删除元素时速度非常快、但访…