Py学习  »  区块链

区块链究竟是不是“世界计算机”?丨得得专栏

链得得 • 5 年前 • 375 次点击  

点击上方蓝色字体,关注我们

链得得
一区一块链世界,春风得得为谁来。

链得得专栏作者简介:白硕,北大理学博士。曾任中科院计算所软件室主任、软件方向首席科学家,上海证券交易所总工程师。


区块链兴起以来,特别是以以太坊为代表的具有可编程特性的所谓区块链2.0兴起以来,关于区块链是“世界计算机”的说法就一直在流行。据说V神比较爱用这个说法,但不知是不是他的首创。具有图灵完备性的智能合约执行环境是实现所谓“世界计算机”的一种途径。


更广泛地说,支持任何种类的DApp运行环境都走在这条道路上。我们在本文中想表达几层意思:


一、图灵完备的“世界计算机”的技术路线,在计算机发展史上绝不是新鲜的,各种类型的尝试都有。


二、即使考虑到“可信”的诉求,用成千上万台计算机做同一件事情,无论如何是效率低下的,不改进没有前途,局部的改进值得肯定但不是根本性的。


三、从智能合约到可信的世界计算机,靠谱的计算架构是“链下执行、链上验证”,这是“一切即挖矿”方法论在“世界计算机”领域的体现。

“古已有之”的世界计算机


上个世纪,计算机科学的伟大先驱阿兰·图灵创立了通用可计算模型——图灵机模型。图灵的理论并非停止于用图灵机模拟一个个具体的算法,而是超越了对具体算法的模拟而上升到为用有限符号所描述的任意算法提供通用执行环境的更高层面。


当我们把算法编码为数据,这个通用执行环境也就相当于处理经过编码的算法这类特殊数据的某个图灵机。在这个层面,图灵提出了通用图灵机的停机问题,并证明其不可判定。在这个层面,数据和程序可以相互转化,这开启了通往通用数字计算机的生命之门。


基于世界上最早的通用数字计算机的设计和制造实践,冯·诺依曼提出了著名的程序代码存储的原则,后世称之为“冯·诺依曼架构”。在这个原则指导下,通用图灵机从理论模型落地为工业产品,并一直沿用至今。在计算机的存储中,数据和程序长的样子并无根本分别。一段存储内容是数据还是程序,完全取决于程序的内在逻辑和初始入口。正面的例子有操作系统的boot,反面的例子有病毒的传播,无一不是靠了冯·诺依曼他老人家定下来的这条神圣的架构原则所赐。


互联网出现以后,数据通过网络的传输有了明确的落地载体,传输的内容也就可以玩花样了。如果说在单机时代,程序和数据都在本地一个池子里还显不出花样的差别的话,当网络把一个池子变成用通信管道连接的两个池子之后,“世界计算机”的玩法也就逐渐清晰起来。


第一种玩法:程序在远程,本地上载数据到远程


我们在最初的RPC(远程进程调用)和Web兴起以后的CGI、PHP、ASP都可以看到这种模式,以COM/DCOM和CORBA为代表逐渐形成两个分布式对象体系阵营,后来逐步进化为SOA(面向服务架构)和现在流行的微服务体系。


第二种玩法:程序在本地,远程下载数据到本地


这种数据驱动的应用激活模式,被微软OLE/ActiveX玩得烂熟。微软的浏览器插件都是这么干的,网景(Netscape)的浏览器就是这么被微软干死的。现在还在活着的其他浏览器和客户端App,要想继续活着,也必须走这条道路。


第三种玩法:数据在远程,本地上载程序停靠到远程


这种模式就是所谓移动agent模式。在上世纪90年代,曾经引起过一阵小小波澜,但终究难起大浪,因为大家都认为这样的模式太不安全了。没过多久这套把戏就销声匿迹了。


第四种玩法:数据在本地,远程下载程序到本地处理


这种模式大家可能还记忆犹新:这不就是“瘦客户端”吗?有人也管它叫“网络计算机(NC)”,有人管它叫“透明计算”,其实一回事。在网络带宽越来越富裕的今天,它不再奢侈,自有它可落地的场景。


这四种玩法,用一张2X2的表格,横向表示激活模式,纵向表示传输模式,画出来是这样的:


由此可见,世界计算机的玩法,的确是“古已有之”,只不过当时的叫法是“世界是一台网络计算机”。但是,谁也没傻到用成千上万台计算机干同样的事,执行同样的程序还要彼此达成共识。那样做,太损失效率了,以至于大家对这种架构的可能性想都不要去想。


那么,究竟是什么原因,使“傻事”成了了不得的发明创造了呢?这就不得不提及一个重要的概念:可信。

程序如何“可信”?


程序如何“可信”?这个问题在传统的计算机行当里也不是没有人考虑过的新概念。但是传统可信计算的研究,局限在数据高度敏感的少数部门之内,因此其圈子也相对“小众”,本文也不拟展开论述。笔者仅仅指出一点:传统可信计算圈子对可信计算环境的诉求,与当今区块链领域的诉求相比,不仅没有丝毫的逊色,甚至可以说是有过之而无不及。


区块链因为其承载经密码学勾稽、群体见证从而可传输价值的“公共账本”而变得重要起来。但是一个像比特币一样只能记账和转账的公共账本,只是对现实世界人们的“账本”、“钱包”或“保险箱”的简单模仿。对于大千变化的数字世界来说,这点简单模仿似乎太单薄了些。V神说,好吧,我来给你们加点作料。于是有了虚拟机和智能合约。


虚拟机是智能合约的执行环境,但是,在别人掌控的主机上,作为执行环境的虚拟机和作为执行对象的合约代码都是可伪造、可做手脚的。智能合约里又充进去了许多交给智能合约支配的数字资产,万一把不可信的执行结果达成了共识回写到账本,那就万劫不复了。于是乎,“记账”的概念在以太坊那里有了新的推广,不仅记录账本上你直接支配的资产,也记录用代码支配着你的一部分资产和信任状态的智能合约的运行轨迹,即所谓“世界状态”。


如果“世界状态”的比对是成功的,智能合约的运行结果据称就是可信的。为了以“公链”的方式达成对智能合约执行结果的可信性,于是有了成千上万台计算机在同样的虚拟机执行环境下运行着同样一批智能合约的蔚然景观。


但是,难道这就是“可信”的代价?这就是“世界计算机”这么美好的概念带给我们的现实?不!且不说数十万个合约挤在一条公链上等待分配计算资源来运行是一件多么恐怖的事情,导致“油”价水涨船高,单就是这种千军万马低效率地做同一件事情的打法,也绝非一个训练有素的计算机专业人士所能容忍,更不要说那些揭竿而起的极客了。有人犯傻,就有聪明人的机会。


一种解决方案就是把合约(或一般地,DApp)的执行引到“侧链”上去。在对合约的执行结果只有少数人感兴趣,但合约所关联的数字资产与公链仍然有千丝万缕联系的情况下,这是一个可行的解决办法。亦来云(Elastos)倾向于这种解决方案。


还有一种解决方案就是跨链。用同构的子链运行智能合约,所涉及的数字资产则在子链和公链之间进行跨链清算。Cosmos倾向于这种解决方案。


EOS更加狡猾。明知公链资源紧张,偏偏把紧张的资源拿出来拍卖形成套路,什么内存啊、画布啊,都干得出来。


前两种方法在对计算压力进行分流方面做得都是可圈可点的。但是现状是,一个DApp部署在链下,要么不涉及“可信”诉求,要么对“可信”无可奈何只能接受现状(例如天气预报、航班到达时间、比赛结果比分这样的外部信息源),否则部署在链上一定是首选。避开公链而选择侧链和跨链,仍然没有离开“链”。这是一种必然的宿命,还是没有找到关键的突破口?


EOS的做法不是在解决问题,而是在利用没解决的问题发“链难财”,不说也罢。


“世界计算机”和区块链的关系,陷入深深的纠结当中……

一切即挖矿


今年开春,“交易即挖矿”的口号引发了一场至今尚未偃旗息鼓的“搬砖引流”大战。所谓“交易即挖矿”,就是把平台币的发行和来交易所交易的流量挂钩。从金融角度看,流量并不等于流动性,平台币并不是奖励给提供更好流动性的交易者的,而是奖励给被扭曲的、不具有市场化定价意图的搬砖行为的。


这和交易所设立的初衷是相背离的。当然,作为短期的促销行为,我们无可指责。更何况,平台币兼有权益属性,对于目前数字资产交易所治理结构的改善是有所帮助的。所以,不能全盘否定“交易即挖矿”的做法,但“交易即挖矿”也说不上就是能使交易所脱胎换骨的灵丹妙药。


按下交易所不表,我们来拓展一下“交易即挖矿”这个口号。它对我们的最大价值在于,从这个口号往前再走一步,就是“一切即挖矿”。从今年六月份笔者在乌镇提出“一切即挖矿”这个观点以来,笔者得到了方方面面对这个观点的响应。现在,我们从“世界计算机”的角度,看看“一切即挖矿”意味着什么。


在现实世界中,我们遇到大量的计算任务和信息处理任务,都具有执行难度和检验难度的非对称性。执行任务难,检验执行结果容易的例子比比皆是。数学家们为了黎曼猜想前赴后继奋斗了一百多年,好容易有牛人宣称差不多做出来了,结果一晒出来舆论哗然,不少人说这根本没有证明么。数学证明,构造难,检验相对容易。在数理逻辑中,即使是命题逻辑公式,构造证明的复杂性是NP完全的,检验证明的复杂性却是多项式的。


NP完全问题都有这样的特点。


现实的很多工作流程,分解开来也是这样。做一个东西难,检验一个东西做得是否合格,就相对容易很多。你为社区做一项具体的贡献难,大家检验你做没做你所声称的贡献,容易多了。


所以,以上的例子在佐证“一切即挖矿”的观点。一切即挖矿,作为一种DApp架构设计的方法论原则,可以这样来表述:把一项工作尽可能地分解成为若干个“执行-验证”环节。把“执行”环节甩到链外,不关心其过程,只要其结果;把验证过程留在链内,群体见证,保证其可信性,并把结果的可信性与激励的可信性强挂钩、紧耦合。


可以看出,这样的架构安排如果能够得到彻底的贯彻,公链计算资源会有根本性的释放和缓解。公链只做检验,不做只看结果不看过程的任何事情。要干这些事情,去链外干。反正你干的不对,没人踩你。你干得慢,你拿不到激励。如此而已。反过来,在链外发挥最大效率优势的执行方,会得到更多的激励。这可以鼓励技术极客们把功夫花在链外,让DApp干好该干的事情。


比特币的矿机,就是最典型的链外DApp。你怎么解哈希,没人管你,也没必要把代码和芯片设计晒给别人。区块链只需要看结果,只需要对结果达成共识。在这种架构下,矿工们也确实得其所了。这将不是个例,一切DApp,只要可能,执行环节一定会甩到链外;油水大到一定程度,一定会硬件化。这是不可阻挡的历史潮流。


原来,世界计算机也可以不那么笨重的。本文仅代表作者观点,不代表链得得官方立场

再不懂区块链,你就out了!

钛媒体&链得得联合打造的音频科普课重磅上线

👇识别下面海报二维码或点击阅读原文👇

开始学习《精通区块链》吧。

国庆期间更有大礼相送。

下载链得得App学习效果更佳哦!



阅读原文或扫描上图二维码 ,查看并订阅「精通区块链」,每天五分钟,精彩不容错过!

今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/AppsVDjl9R
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/24795
 
375 次点击