Bitcoin SV的开发哲学——变形虫框架

Bitcoin SV的开发哲学——变形虫框架

之前的心路历程的第二篇由于需要收集和准备的材料很多,加上工作限制时间有限,之后再发布。

前言

与币圈其他的浮躁气氛不同,现在BSV的社区是一个非常有创造力,非常有活力的社区。在分叉后不到半年的时间里,各种应用如雨后春笋一般涌现出来。我早期研究比特币的时候,设想了很多比特币支付功能以外的扩展应用,可惜受限于区块容量,脚本制约等等因素无法实现,而BSV在回归中本聪版本的比特币的路上,开放了很多限制,让曾经无法实现的想法得以实现,也极大的促进了生产力的提升。有点类似中国的改革开放,放开限制,让资本、技术、开发者自由加入,充分竞争,成就了中国经济的奇迹。

目前BSV的应用大多集中在信息的上链存储,得益于巨大的区块容量(以后还将坚定不移的扩大,直到Unlimited),链上的储存成本之低已经碾压所有主流公链,之后随着区块进一步扩大,这个成本还会降到更低。如果上传一篇文章到链上,只需几分钱的矿工费,就可以让你的文字永存于世上。按照1sat/byte的费率计价(如果矿工接受,这个费率可以更低),上传1M的内容上链大概需要0.01个BSV,按目前的价格500人民币的币价来算,大概需要5块钱。乍一看5块钱1M的成本跟AWS S3这样的中心化云服务储存桶相比简直是高的可笑,但是加上以下我说的这几个条件,这个成本就会变得非常合理而且难以置信的低。

  1. 数据需要绝对安全的保存,不允许篡改或毁坏,安全级别达到11个九(99.999999999%)
  2. 数据要保存100年以上
  3. 数据可以随用随取,读取数据成本很低(参考AWS Glacier查询归档数据的成本)
  4. 一次付费,永久保存(无需续费)
  5. 不需要注册和身份认证,免许可,任何人都有上传的自由

综合以上的分析可以知道,区块链技术在信息安全存储的方面具有所有传统中心化云存储所不具备的安全优势和成本优势。正是这种成本优势,才能引入大规模的商业应用,才能在此基础上构建更多功能复杂的应用。

Unwriter

BSV社区的开发者有很多大牛,其中我最佩服的就是Unwriter,不止因为技术层面,更是因为立场和思想层面。unwriter是一个匿名的开发者,从未接受BCH或BSV社区的捐赠,是一个保持经济中立的独立开发者。他的目的很纯粹,就是利用区块链的技术,来实现伟大的产品。而在BCH和BSV分家之后,他写了一篇文章叫做《The resolution of the Bitcoin Cash experiment》,表明了立场,开发者才是一条公链项目最大的财富,开发者才是资本家。

The application developers are the “capitalists” of the “nation” of Bitcoin. And THEY are the ones who determine the “wealth of the nation”.

公链的价值来源于应用,而应用不是凭空产生的,是开发者开发出来的,最能吸引开发者的公链,最能吸引应用。作为开发者,最不希望的就是把自己的应用建立在一个根基不稳定的系统之上,如同BCH这种半年一大改的链,没有人希望之前的开发成果随着一次可有可无的升级而全部重构。

这篇文章对我的影响很大,我本身也是开发者,对分叉当时ABC的所作所为看在眼里,记在心上,这也是我全面支持BSV的很大的一个影响因素。

英文原版如下:

The resolution of the Bitcoin Cash experimentmedium.com

还可以参考中文版《深度解析比特币现金实验》(这里感谢黄酥酥的翻译):

Sina Visitor Systemwww.weibo.com

Unwriter的最重要的作品就是BitDB,这是一个曾经开发在分叉前的BCH上的持久层框架,它能够将比特币区块链映射成一个MongoDB的实例,支持通过MongoDB的查询语句来查询区块链。一句话概括,就是这个框架将区块链当做数据库来使用,在分叉之后,Unwriter放弃在BCH开发,将所有的项目转向BSV。

在BitDB的基础之上,衍生出来了很多变种的数据库应用,挑几个举举栗子(日后有时间会逐个总结一下这些数据库应用的使用方法和应用场景)

BitDB变种

Genesis(创世纪):一个用来支持标准地址查询全量交易的数据库,可以看做一个全量区块链浏览器

A Bitcoin SV Exclusive BitDB nodemedium.com

Babel(巴别塔):一个专门用来存储和查询链上应用数据的数据库,可以看做Genesis的一个子集,只关心数据体不关心交易内容。

A BitDB Node for Data-Only Bitcoin Applicationsmedium.com

Chronos(克罗诺斯——时间之神):一个专门使用时间戳来操作和查询数据的数据库,查询规范与前两个不太一样,专门用来处理时间相关的应用。

An Ephemeral BitDB for Dealing with Timemedium.com

Meta(元):一个对区块元数据进行操作和处理的数据库,只关心区块,不关心区块内部的交易。

A BitDB for Bitcoin Block Metadatamedium.com

Bitsocket(比特套接字):一个监听区块链事件,由事件触发业务逻辑的推送消息总线框架。

A Programmable Bitcoin Push Notifications APImedium.com

Planaria(变形虫):一个支持自由定制规则的储存框架,在此基础上可以实现所有的程序逻辑,这也是本文要重点说明的理论基础。

Opening up a whole new dimension to programming Bitcoin powered state machinesmedium.com

变形虫Planaria

上文中举例的各种特殊的数据库应用都可以归为具有某种特定实现的变形虫。变形虫这个框架阐述了如何基于比特币的存储功能,来实现几乎所有的应用程序的哲学逻辑,也是论证Bitcoin Maximalist一直在信仰的比特币可以实现世间万物的逻辑基础。

有些人说ABC和BSV没有什么本质区别,都是大区块币,这些人恰恰只能看到表象,看不到本质。ABC和BSV的核心分歧在于中本聪比特币本身的设计是不是完备的,ABC认为比特币的设计是老旧的,功能残缺的,需要各种炫技的新技术(无论有没有用),需要半年一次的迭代更新,一次一次进行底层的修改来追赶热点。BSV则认为,比特币的设计已经很完备,底层逻辑无需改变,需要放开各种无谓的限制,让应用在基盘之上自由生长。之前关于CTOR的问题就有人论证过,使用比特币已有的脚本操作码就可以实现这个功能,而ABC却不惜以分叉为代价来强行加入这个本就可以实现的功能作为底层的一部分,彻底破坏了矿工按照交易体积来计价收费的逻辑,强行把比特币变成以太坊(按照不同的操作码进行gas计价,再乘上gas单价来算出手续费)。

我认为之所以Unwriter在变形虫的框架文档中介绍了很多看似是哲学以及毫不相干的内容(又是状态机,又是薛定谔的猫),实际上就是在证明比特币可以实现图灵完备,可以实现复杂的智能合约。

最近我希望通过BSV的基础设施来实现一些小的功能应用,所以一直在研究现有的框架,变形虫就是研究的一个重点,说实话,现在我也不敢完全宣称了解了其中的全部思想,但就以我粗浅的理解来看,Unwriter所描述的,正是CSW所说的MetaNet万链归一的可能性,从理论到实际使用,都没有背离最初支持BSV所希望的愿景。

文章如下:我尽量以自己的理解来简单阐述一下


Planaria Introductiondocs.planaria.network

Bitcoin SV的开发哲学

无极生太极,太极生两仪,两仪生四象,四象成八卦,八卦演万物。

看似是玄学的话,却是计算机最基本的事实。我们现在所有复杂的计算机程序,应用,图片,视频等等等等归根结底就是0和1的组合,换句话说,所有的数据都可以被划归成0和1,也就是文件。

Everything is a file.
If you think about it, everything runs on a file. And all applications are just files, which make use of other files.

Once you see it this way, you’ll realize that Planaria can be used to build all kinds of full fledged Bitcoin-powered computation backends.

Below I’ve listed some interesting technologies that are all built on files just to help with imagination.

But think about it. EVERYTHING IS A FILE.


这里的文件不是简单意义上的储存在硬盘上带后缀的“文件”,而是一切数据的统称。存在内存里的,缓存里的等等等等。对数据进行的处理称为操作,操作依赖代码,代码本身也是文件。

BSV区块链可以低成本存储文件,而利用变形虫框架可以对文件进行增查删改。很多人质疑这一点,文件一旦上链不就永不可更改了吗?这点没有错,但是如果跳出这个上链的文件本身来看,上链的文件只是这个文件在一个固定的时间戳的快照,快照是永不更改的,而文件是可以更改的。类比一下,我们活着其实也是被时间定格在一个个的快照中,过去的自己没有办法更改,但是现在的自己可以改变,我们随时随地可以产生新的快照,已经产生的快照作为我们的历史被定格,未来却是可以改变的。上一秒的我和这一秒的我还是同一个我吗?

这种文件通过快照来更新自己的模式我们并不陌生,Git就是一个最直观的例子。通过Git系统,也可以对文件进行增查删改,而且Git存储文件与传统文件存储不同的地方是,Git记录了一个文件的所有变更历史,可以追踪溯源回滚等,传统文件存储用新状态替换掉旧状态,没办法保留历史。Git通过一次次的提交(Git commit)来修改文件的最新版本,最新版本就是最新的状态,而一次次的提交被Branch(分支)定格在历史中,这种模式和比特币的文件管理简直是天作之合,比特币的文件管理从安全性和身份管理上甚至更为优越,还自带了价值传递的功能,不夸张的说,比特币BSV的文件系统可以看做一个超级Git。

Unwriter在文中,将比特币称为发动机(motor),将比特币看做动力源,源源不断的由矿工提供交易和事件(驱动力)。并对这种动力源进行了一些要求:

The rotation logic (Bitcoin's algorithm) is deterministic and secure (powered by Proof of Work), making it the perfectly stable piece of technology to power all kinds of useful machines.

简单解释一下,这种动力源要可预测(比如汽油的燃烧产生的动力,是可控的),动力源要安全(由POW保证),动力源要稳定。这样就可以驱动机器去运转。

Unwriter将应用程序称为机器(machine),机器需要动力源来驱动,而相同的动力源可以根据机器的构造不同,产生不同的效果。比如同样品质的汽油,在不同的车上的能耗比不一样。有了一个稳定的动力源,就可以以它为基础构造各种各样的机器,来实现各种各样的功能。

有限状态机(Finite State Machine

文中阐述了使用BSV构建有限状态机。什么是有限状态机?这是一个计算机的术语,用于描述一种具有有限个状态,并能在这些状态中进行切换的机器(或程序)

有限状态机(英语:finite-state machine,缩写FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型

比如unwriter在文中说明的地铁闸机,闸机有两种状态,一种是锁定(人不能通过),一种是解锁(可以通过),而输入的动力源种类也有两种,一种是刷卡,一种是推动。闸机可以根据输入的动力源来切换自己所处的状态。如果闸机锁定,此时刷卡,闸机就会变成解锁状态,而如果此时推动,则继续锁定。

将一个有限状态的数据作为机器,给其一定的动力源作为输入(input),就会产生一定的输出(output),输出取决于输入和机器的处理逻辑,这就是计算机函数(function)或者方法(method)的基本形态。

将BSV的链上交易作为动力源,将已经上链存储的数据作为机器,就可以推动任意的程序来运转,这就是BSV智能合约的理论基础。

无限状态机(Infinite State Machine

上文提到的有限状态机已经可以帮助我们事先几乎所有的应用程序,但是比特币可以实现的远不止这些。下文脑洞略大,但并非胡说八道,有研究和理论的基础。

Unwriter用薛定谔的猫(同时是生和死两种状态的叠加)来形容这种状态机,这也是这篇文章让人最难于理解的地方,这种同时具有多个甚至可以相互矛盾的状态的现象不止是理论,而且真实存在。量子物理的世界就充斥着这种矛盾和和谐。

薛定谔的猫是什么问题,大家想必都有所了解。这里我们还是针对状态机来说明。

we can build applications that are NOT constrained by resources.

我们可以构造出一种不被文件资源所限制的应用

We can build machines that:

我们可以构造出满足以下条件的状态机:

  • are running and not running at the same time(在同一个时间处于运行与关闭的叠加态).
  • don't have to exist nor run today, yet can be regarded as "running" today(并不需要现在就在运行,却可以被看做一直在运行).
  • can have multiple parallel states that even contradict with one another(可以同时具备多个平行的状态,甚至状态之间互相矛盾).
  • never die, even when they are not alive(从来不会死,即使从来没有被启动过).
  • can interact with one another in non-deterministic ways(可以和其他的状态机之间以一种“不可预测”的方式交互).
  • can interact with one another in combinations which even its original inventors never foresaw(可以和其他状态机相互组合,产生连原作者也无法预料到的神奇现象).
  • spawn other such machines without external intervention(可以在没有外界影响的情况下,孵化出其他的状态机)

Unwriter说实现这个需要彻底放开所有的脚本限制。在我看来,这种类型的程序,更像是无法预测状态的程序,量子力学有提到,这个世界是测不准的,存在大量的真随机。而所有生物的产生和演化更符合上述提到的测不准现象,这就有可能在比特币系统上衍生出原始计算机生物,进而随机地衍生出高等计算机生物(人工智能),之前记得在那里看到过,人脑也是没办法用计算机模拟的,因为人脑是测不准的。而无限状态的程序提供了这样一种衍生出全宇宙可能(抱歉这里脑洞太大,已经逼近我的理解和认知的边界了)。

而Unwriter提到的同时是死和活两种状态的程序,可能是有一部分serverless service(无服务器服务)的意思,一个程序只要部署上链,不需要你运行它(此时是死的),但它的状态又时时在改变(又是活的),直到你下次运行它,才能确定它最终的状态。就像只有打开盒子看到猫才能确定薛定谔猫的状态,而打开盒子就破坏了这种同时死同时活的状态。

Planaria概括

  1. 一个比特币应用程序的框架,具有以下特点
  • 透明性:数据都是从区块链上获取到的,绝对安全可信
  • 便携性:变形虫框架利用了docker这种优秀的容器技术,让部署变得更加简单
  • 共享性:区块链本身相当于一个超级云平台,平台上的应用之间可以相互共享数据
  • 可定制化:对变形虫的定制没有限制,你可以实现任何想实现的程序
  • 用户友好:变形虫框架将raw交易进行封装,将用户可读的数据展现出来

2. 独立可定制的CRUD(增查删改)数据库

  • 使用MongoDB作为可读实例
  • 提供CRUD的api
  • 读写分离,MongoDB只读,而写操作需要构造比特币交易上链
  • 由区块链事件驱动数据更新
  • 自带权限认证功能(比特币交易本身即是权限认证),鉴权秘钥无需服务器保管

3.由比特币作为动力源驱动的有限状态机

  • 输入: onmempool,onblock,onrestart三个api方法,来监听不同的区块链事件,来进行相应的处理
  • 处理逻辑:数据的CRUD
  • 状态存储:planaria and planarium 两个组件,一个爬行区块链,一个提供查询
  • 输出:通过zeroMq消息队列,将结果推送到消息订阅者

4. 无限状态机(理想状态)

实现真随机和测不准的程序。实现无需长期运行的serverLess程序。实现人工智能。脑洞略大,此处需要继续研究实现方案)

变形虫的开发范式

基于区块链开发的应用,和传统的Server Client类型应用在一些认知上有些差异,理解这些差异正是理解区块链颠覆式创新的核心。

  1. 分布式鉴权系统

传统的身份认证,需要用户在服务器上存储账号密码(密码hash),并由中心服务器进行权限校验,再授权相应的操作。

而区块链应用,操作即交易,交易即鉴权。能发起相应的交易,自然有权限。直接的结果就是,服务器不再保存秘钥,而将秘钥交还给用户手中,由用户自己保管,破解了中心化系统长久存在的秘密泄露威胁。

2.读写解绑

传统服务器,读写全部都是由中心服务器进行,如果服务器被攻破或内部人员作恶,则可能产生一些违反用户意愿的数据篡改,数据删除等行为。变形虫框架将写权限完全归还用户,用户通过构建特殊格式的交易来写数据库,而中心服务器只负责监听区块链,提供给用户数据。这样,就算中心服务器宕机,用户写入数据,修改数据的功能还能完整保留下来(能发交易就能改),这可能就是Unwriter说的又死又活的状态吧。

3. 独立应用

传统的应用,如果应用的开发者或者维护者停止了应用维护,则用户就算想要接着使用,都没有办法改变现状。典型的就是360云盘这样的,强制给用户一个截止日期,然后就清空所有云盘中的数据,停止对外提供服务。

而通过Planaria构造的程序,代码和用户数据都被部署到了链上,用户不需要再关心开发者或者维护者的态度,这个程序会永远存活下去。任何人都可以随时随地执行这些程序,让这个应用永远活下去。用户的数据也永远保留在链上,不会丢失。

4. 比特币作为消息总线

传统的应用,生态都是封闭的,最直观的例子就是微信和支付宝各自的生态闭环。在其生态内,可以共享生态内的资源,而跨生态之间的合作就会变得很麻烦。

而比特币应用共享同一个区块链系统,在其上可以开发出各种应用之间的业务合作,让消息的共享,价值的流动更加通畅,可能会爆发出更多更好玩的应用。

同时,由于比特币的开放性和免许可性,应用之间的通信可以免受各种和谐政策的影响,点对点发送,自由无限制。

5. 透明计算

和以太坊的智能合约相同,任何人都可以下载,执行,校验程序的执行过程和执行结果。不一样的是,以太坊的所有节点无论愿意与否,都要全部执行一遍智能合约,导致以太坊的可拓展性非常差,又慢又贵。而变形虫程序,只有关心合约的人需要下载合约来执行,其他人可以无视与自己无关的程序。加上比特币的UTXO结构,在拓展性上远胜于以太坊的账户模式,这个问题以后专门写文章讨论。

6. 代码永恒

长期来看,所有中心化的程序都会死亡,所有生物都会死亡,只有基因永存。而这个基因,就是被记录到区块链上的代码,代码永恒。当你下载代码执行的时候,相当于你承载了这个基因存活了下来,人类归根结底也是基因的载体。

结语

这篇文章主要从理论方面介绍了BSV区块链上的可能性,BSV的理想不是什么IXO这么肤浅和浮躁的目标,BSV的目标是改变商业模式,改变互联网模式,改变人类模式。很多人现在在看Metanet的笑话,但是who cares,haters gonna hate。在你们沉浸在无休止的谩骂和诋毁的时候,BSV正在建设基础设施,而这些基础设施就是以后让你们的山寨币归零的最强大的机器。

昨天出了个事,这里有必要提一下,币安的赵长鹏宣称要下架BSV。且不说作为交易所无法保持中立的立场对不对,就这个幼稚的想法就很可笑。市场是开放的,你Binance下架BSV,最高兴的是谁?不是Core党,也不是BCH党,而是火币和OKex,你做交易所的不是在跟社区竞争,而是在跟其他交易所竞争,拜托你搞清楚对象。况且BSV社区压根不care你binance上架还是下架,当初上架不也没人给你们上币费吗?BSV现在正在做的就是建设,就是真正脚踏实地地做应用,真正到了人人都在用BSV的时候,根本就不愁交易所上不上架的问题好吗?你下架,伤害的只有你自己,你不想挣的手续费有的是人想挣。做事情没必要做的太绝,免得以后没得台阶下。

得益于现在的文章上链应用已经非常的成熟和好用,我的所有文章都会先上传到BSV的区块链上,花上个几分钱就能永久留存著作权,真的是非常棒。欢迎转发本文,但是用作商业应用,请和我联系,我已经保留了最硬核的著作权证据,也将身体力行去享受着BSV应用带来的便利性。欢迎大家来我链上的文章打赏。

On-chain text and file sharingwww.bitpaste.app

发布于 2019-04-13

文章被以下专栏收录