舆论是个很有意思的东西。去年年底到今年年初,我们听到了那么多关于区块链技术的赞美,现在,我们又听到人们对这项技术的各种全盘否定。最近我在不同地方看到了不同文章,获得了不少点击数,并被人们大量转发,这些火热的文章都是一个主题,强调区块链技术无用论调,并切列举了各种与区块链技术相关的骗局。
其实这也很正常。市场研究公司 Gartner 早在九十年代就总结出一个叫做「技术循环曲线 The Hype Cycle」的模型,来总结一项全新科技如何在各种热炒冷贬和人们的希望与失望之中,成熟演变的过程。
对于一个非资深技术背景的人,在技术早期发展阶段,要从芜杂的市场表现中理清技术价值的本质,实属难上加难。越是基础层面的技术发展,越会造成严重的信息不对称,越是容易被人利用来构造骗局,越是需要深入探究,透过现象看清其本质,同样的局面在互联网早期一样出现过。
作为计算机科学的PhD, 这个过程我花了近十年,才略见端倪。我看到了区块链技术本质上带来了什么,有什么是现有技术和基础设施及其组合无法实现的。正值中本聪发表关于比特币的论文十周年之际,我想把自己在区块链这个领域内的经历,以及为什么我相信区块链技术是一项了不起的技术梳理一下,通过这篇文章分享给大家。
第一个十年
记得 2009 年,我还在微软亚洲研究院(MSRA)赶论文,投ACM SIGGRAPH 年会 (一个计算机图形学领域的顶会) 的年代,无意看到了中本聪关于比特币的论文,觉得很有意思,安利了身边的朋友一起去挖矿。当然,几周之后也就忘记了。
当时我还没有开始从事分布式系统方向的研究,没有意识到这全网发生的premissionless共识协议有多么伟大,甩了拜占庭容错(BFT)算法几条街,也没有意识到这个东西在若干年之后会改变了自己的财务轨迹,更没有意识到这项工作是一个全新世界的开端。
我非常庆幸自己经历过的这10年,虽然大部分时候,只是作为一个看客。
不少朋友问我,区块链这个东西是个什么技术,靠谱吗?这里先给结论。对于问题的前半部分, 我的回答是:区块链是一个独特的技术,并且实现了全所未有的能力,这个能力无法用既有技术的组合实现。对于问题的后半部分,在这里我不作任何投资建议,但是我的回答是肯定的:区块链技术一定有切实落地的场景,可以满足之前无法满足的需求,从前所未有的角度带来效益的提升。但是,我必须指出,在我看来,区块链技术靠谱的场景,极大概率不是大家眼下看到的这些,也不是对现有解决方案的改进,而是全新的范式下新的业务模型、新的盈利模式。 评估一项技术本身的正确性是相对容易的,而要评估一项技术能产生的社会影响力以及经济价值,却是难上加难。越是带来根本上变化的技术,其发展轨迹就越是难以琢磨。区块链就是一个例子。
2013年,那时我在微软总部主导了一个基于GPU集群的机器学习计算平台的设计和研发工作。我用这个架构在自己家里挖了一段时间的莱特币(LTC)。现在来看,那是我首次「脱贫」,摘掉了「no-coiner」的帽子。而后,我也入坑交易所,作为一名新韭菜入场了。然后在若干次被割之后,痛定思痛,最后开启了量化交易的职业支线。在这个过程中,对技术的认可并没有帮助我对加密货币的币价有任何有效的认知。一个没有切实落地的技术,价值何来?只用量化程序去发掘短线的价格趋势就好了。当时我没有看明白,区块链到底带来了什么。 2017年,我来创新工场做EIR(驻场企业家)兼投资人,看了无数区块链的商业计划书,各种花式白皮书,从底层技术到上层应用,各种漏洞百出的技术架构,自说自话的经济模型,荒诞鬼扯的应用场景,简直百花齐放。还好这一年里面,我们投了比特大陆,稍微正色履行了一下我这个投资人的角色。矿机业务确实赚钱,交易所也很赚钱,但这一切都是建立在对数字货币未来期许的基础上,而不是基于任何当下区块链的切实业务。
这一场旷日持久的击鼓传花还可以走多远?如果始终没有大体量的切实落地的业务顶上,相信总有落幕的那天。不过谁知道呢,就像2016年的那场以太币的传销始终没有崩盘,而是被2017年那场更大规模的ICO续上命了。不过在这个时期,市场上的DApp给了我一些提示。
核心技术价值
我相信,区块链技术带来了一些特别的东西,前所未有的东西。
时间到了2018年,7月份出现了一个游戏,玩家众多,又一次严重阻塞了以太坊网络。Fomo3D,一个典型的资金盘游戏,玩家以递增的价格买钥匙,如果一段时间内无人买钥匙则游戏停止,最后一个钥匙买家赢得沉淀资金的一半,另一半资金均价回购所有的钥匙。
这是一个设计的还不错的庞氏游戏,首轮结束时瓜分了价值180万美元等值的以太币。有意思的倒不是这个游戏本身,而是这个游戏执行的方式。这个资金盘没有任何的价值包装,只是赤裸裸地描述规则,项目方也是完全匿名,没有任何背景可查,分分钟准备跑路的样子。但是游戏就在这样一个完全没有信任背书的情况下,开盘了,无数玩家竟然都信了,都冲进去了。然后一切都如期发生了,之前约定的规则都被严格执行了,没有任何意外。通常庞氏总是和骗局连在一起,不过这个游戏是一场「庞氏」,但却不是一场「骗局」。
这是我想说的区块链技术的核心价值(也许是之一),是前所未有的能力,是之前任何信息技术无法实现的:
在业务全部信息可形式化的范畴内,让这个计算系统可以自证清白。
回到前面讲到的游戏,正是因为运行在以太坊上面,区块链技术实现了规则一旦被制定、被部署,就无法被修改,连运营者开发者都也无法修改。只要以太坊没有因为被51%攻击而摧毁,这些预设的规则就会被严格执行,不受任何人的干扰和控制。规则将以开源的方式部署,任何人都可以查看并确信规则的每一个细节。即使最初的开发者突然人间蒸发,也不会影响游戏的正常运行。这样的一个游戏系统,自证清白,一切会按照预设的方式发生,而不会有任何意外。所有玩家不需要信任游戏的开发者不会作恶,也不用担心相信游戏的运营过程会有任何的猫腻。 如果信息服务系统可以自证清白,那么其所承载的业务就可以赢得所有人的信赖。这个情形其实并不是建立了信任,而是业务的运行不需要信任了(trustless)。同时大家也可以很简单地认同这样的业务所传递的价值,不需要各种前置的信任建立过程,省去了大量的时间和精力,这就是共识的价值。
但是区块链技术不是万能的,能够自证清白地运行是有前提的:
1. 相关业务的信息必须能够被形式化并体现在系统内部。所以比特币的储值、支付、发行过程是有保障的、不需要信任的,但是比特币对法币的价格不在系统内部,系统本身无法保障这个事情,完全依赖外部的信任(或者说信仰...)
2. 系统的物理计算设备必须是去中心化的,并且参与系统的过程可以有壁垒,但是必须没有授权控制方(premissionless)。较之传统的支付接入,比特币作为支付系统,任何接入方无需申请,也不需要和任何方签订协议,也不会被费率歧视或者担心哪天会被吊销。
3. 系统承载的业务逻辑的代码必须开源,并且可以证明实际系统中运行的代码就是源码公开的那一份。结合上一条,这意味着,系统的运营也将不再属于任何一方。所有人在这个系统中都没有既定规则以外凌驾于其他人之上的特殊优势,包括开发者。
脱离特定物理计算设备的图灵机
1936年艾伦·图灵提出了图灵机这个高度抽象的计算模型,开启了计算机科学时代篇章。1945年,冯·诺伊曼在图灵机的基础上给出了工程上可以实现冯·诺伊曼架构,直到现在,大多数的计算机从CPU到GPU,从Intel到ARM都是遵从这一架构,并藉由半导体技术将其的规模、速度以及性能-功耗比提高到了当年不可想象的高度。但是其基本原理始终是下图的结构。
如果我们用计算机体系结构的视角去看待区块链,他是一个冯·诺伊曼架构的延伸。
在区块链中,「输入」是未定序未确认的交易,「输出」是有序的经过确认的交易,而「内存」中则是账簿的状态。其中央处理器执行的是硬编码(hardcoded)在区块链节点软件中的交易逻辑,或者是第三方部署的智能合约。
我这里从这个视角展现区块链,是为了用最简洁的方式介绍区块链的工作原理,并不是想说区块链本身也是一个通用计算机,或者说世界大计算机。
冯·诺伊曼架构最初是在一个完全中心化的设定下给出的,现在的计算机单机、大型机乃至集群和云服务,本质上都是这样的一个模型。他们关心的是高效地完成计算,是状态被正确更新,得出预期的输出。整个系统的输入、执行逻辑和原始状态都被可信的单一方控制。
而区块链是在一个去中心化的设定下给出的,整个计算系统不被任何一方长期控制。区块链关心的是这个计算是如何完成的,系统的输入是否合法,执行逻辑是不是被篡改。至于其承载的实际计算量,用一台单机就可以分分钟计算完这十年的所有历史交易。 现有的冯·诺伊曼架构的计算系统,其计算过程始终在一个固定的物理计算设备上完成,并且这个计算设备有单一的控制方。可能是一个手机,一台电脑,甚至一个数据中心。对于这个系统的控制者,只要防好黑客,他是可以相信这个计算系统的。而其他人则没有信任的依据,系统的控制者也无法向第三方证明系统是可信的,即使开源了也不行,即使用上了SGX技术也没什么帮助。
而这正是区块链所攻克的问题。区块链将冯·诺伊曼架构的计算架构进一步拓展,使其同特定的物理计算设备分离,才能从根本上避免计算过程被单一的控制方掌控,让所有人都可以信赖这个计算系统。无论是工作量证明(PoW)、权益证明(PoS)或者拜占庭容错(BFT)等共识机制,上述计算过程的实际步骤在全球不同的物理基础(节点)上完成。而不同共识算法的本质就是给出一个依次选择这些物理基础的方案,保证其公允,保证其安全。同时在数据传递层面(提交输入,获取输出),藉由既有的点对点网络技术,使得通讯没有一个固定的接入点,不依赖于特定的IP地址。从而使得这个计算系统能够在所有人的监督下,可信地完成计算过程,很难被篡改,也很难被阻止。
为了脱离特定的物理计算设备,区块链在性能上付出了重大的代价。在不同的节点上间歇完成计算步骤,需要每个节点都准备好计算所需要的上下文和输入数据。在一个计算步骤完成之后,需要每一个节点都获取到最新的输出数据,并更新上下文。期间涉及到大量的冗余的信息传递和存储以及相应的计算。当然后续有非常多的优秀团队,改进这一设计,提升其性能和容量,但无论设计如何优化,这些冗余的通讯、存储和计算是不可能彻底避免的。不过这些代价是值得的,它给冯·诺伊曼架构赋于了全新的计算本质:一个可以脱离特定物理基础的计算方式,一个可被任一第三方信赖的计算过程。
区块链的计算本质
通过剥离数字货币这个构建在区块链技术上的应用,上图给出了区块链本质上的计算模型。与常规的冯·诺伊曼架构最大的区别,是同特定的物理计算设备分离。一旦代码被部署,状态被初始化,全网开始工作,这个计算系统将以不受任何控制方控制的方式开始运行,永不停止。系统不断获取外部提交的企图改变系统状态的操作(OP),依次确认这些操作,以有序的方式输出这些合法的操作,并同步执行这些操作改变系统的状态。
所以:
账簿不是区块链的本质 这个系统维护的状态完全可以是账簿之外的东西,当然更可以不是数据库。它可以是社交关系图谱,可是是网页的相关性及排名,也可以是每个人信用分数和历史等等。其规则所执行的也可以不是交易,而是任何可以被形式化、数字化的信息。交易不可篡改不是区块链的本质 这个系统不可篡改的是既定的规则(代码),以及不可篡改的初始状态(例如比特币的传世区块)。如果上层业务想要的话,我们完全可以在规则中包含翻转或者取消交易的内容。 有序链式区块打包不是区块链的本质 有序输出数据的方式有好多种,区块的批量打包也只是现在的系统对于性能和交易确认延迟的一个折中。理论上一个一个出也没问题,只要有序。输出交易的序也可以不是严格的全局完整的单一线性的序,例如DAG那样的结构一样是区块链的可能实现方式,只要这个不完整的序不会对状态重建造成混淆就行。同样基于异步共识的分片技术也不具备全局的序,但是也不妨碍它成为高性能区块链的可能解决方案。当然,我们姑且还是可以叫:区块链」这个名字。
世界计算机不是区块链的本质 区块链的核心诉求在于关注计算过程的可信,而不是为了获得计算的结果。这一点是与为了高效将计算完成,获得结果的云计算本质的区别。云计算无法实现向第三方证明其计算过程是可信的,区块链对于计算任务本身也无法向云计算那样的高效和低成本。
总之,区块链的计算本质是一个可以和特定计算设备分离的冯·诺伊曼架构,是可以向第三方证明的可信计算范式,目的是为了计算过程真实可信,支持上层应用上实现业务逻辑的自证清白,为世界带来可以计算的信任。
沿着这个技术本质,我们可以进一步探究,区块链应该去做什么,去承载什么样的需求和业务。我会留点时间,在未来的文章中和大家继续探讨 :)。欢迎大家通过我的微信公众号「王嘉平」和知乎专栏「去中心化数字世界随想」,就这个话题展开更多讨论。
作者简介: 王嘉平博士原为微软总部雷德蒙研究院主管研究员,专注分布式系统,计算机图形学和视觉以及用于机器学习的GPU集群等领域的研究,有数十项研究成果发表于ACM SIGGRAPH/ToG顶级国际期刊,已授权的美国专利达十余项。他师从沈向洋博士(现微软全球执行副总裁),在中科院计算所获得博士学位。他的博士论文获得2009年度全国百篇优秀博士论文奖,是该年唯一一名计算机科学专业的获奖者。王嘉平博士现任创新工场执行董事,投资方向为区块链和人工智能。他曾主导了对比特大陆的首轮机构投资,成为其首轮三大主要投资方之一。