比特币只是计算器 以太坊不过大型机:深度解析区块链计算的四大阶段
翻译 | shawn
编辑 | 波波
互联网泡沫后,很多人都觉得再去投资互联网的人简直就是傻瓜,这才是最傻瓜的想法。
——Ben Horowitz, 《创业维艰》作者
在 Ben Horowitz 和网景创始人 Marc Andreessen 合伙创立的硅谷创投基金 a16z 内部,有一批热衷于区块链的技术投资人,他们一直在探讨和分享有关区块链和加密数字货币技术的技术内容和学习资源:比如如何构建区块链,如何掌握区块链的关键概念,如何学习共识算法……
今年初,他们将这些内容和资源集结成册,发布了一篇关于区块链入门的 Crypto Canon,区块链大本营第一时间将其分享出来:如何成为一名区块链工程师? | 附学习资源
今年年中的时候,a16z 内部这批人在创投大佬 Chris Dixon 和专注于加密货币犯罪的前美国检察官 Kathryn Haun 带领下,成立了一个专门投资区块链的基金——a16z crypto。
在介绍这个新基金的愿景时,他们这样写道:
每隔 10-15 年,计算机世界就会涌现出一个新的计算模式来引领世界:60 年代是大型机,70 年代末是个人电脑,90 年代初是互联网,2007 年以后是智能手机……而今,轮到了区块链上关于“信任”的计算模式。
而关于区块链自身的计算模式,a16z crypto 内部的区块链专家 Jesse Walden 又将其分成了四个截然不同的阶段:
-
计算器阶段——以应用为导向,可组合性有限,比特币;
-
大型机阶段——图灵完备,可组合性高,以太坊;
-
服务器阶段——以应用为导向,大力实现可组合性;
-
云计算阶段——图灵完备,具备可扩展性的组合性;
他这样划分的基础,是区块链网络与城市功能的相似性:
两者均依托共享基础设施进行自下而上的成长并从中获益:对于传统企业而言,最好的店铺位置往往拥有现成的居民、公用设施、法律、安全保障和活跃的市场经济。同样地,现有的用户群、数据、安全系统和运行代码等共享资源也可以为开发者提供很好的开发基础。
他们称之为「可组合性」(composability)。
如果一个平台现有的资源可以用作为构建区块,经过编程成为高阶应用,那么这个平台就是可组合的。可组合性十分重要,因为它可以使开发者可以利用较少的资源完成更多的事,相应地,促生出更迅速、复合型更强的创新。
区块链计算机无信任(Trustless)的本质极大地解放了可组合性,因为开发者可以在共享基础设施上进行开发工作,不用担心下级的依赖架构被动手脚。这毋庸置疑,因为区块链既有无需许可的特性(开源的优势所在),又有状态(Twilio 和 Stripe 等 API 的优势所在)。
上述四大阶段,所代表的是区块链计算的四种截然不同的思维模型。在接下来的文章中,Jesse Walden 会对此逐一进行剖析。区块链大本营分享如下:
计算器阶段(比特币)
比特币是区块链计算的先驱。它为「选择坚挺的货币还是数字黄金」这个具体的应用问题提供了全栈式解决方案。除了追踪账户余额和转账记录这样的简单功能外,比特币还提供了一种可以用于构建更为复杂的功能的脚本语言。
有的项目采用比特币脚本来编写更高阶的应用。例如,Proof of Existence 项目利用 OP_RETURN 数据库来创建证据,用于证明某位特定用户在特定时间拥有某份数字文档。 Colored Coins 和 Counterparty 等项目,使在比特币区块链的合并安全性基础上定制代币成为可能。还有一些项目则试图进一步扩展比特币区块链的功能性,或者代币的功能,但由于受比特币脚本语言的刻意约束,这些项目举步维艰。
很多人认为,去中心化货币系统最为重要的特性不是可编程性,而是安全性,受限的脚本语言也是去中心化货币系统的一个特性,并不是漏洞。按照这种思路,我们可以将比特币看作为计算器,而非计算机(在此申明,我这句话是褒义!!)。比特币是被有意设计成这样的,而且它可以很好完成自己的任务,但对于热衷于修补改进、开发新应用的开发者而言,开发新的架构势在必行。
大型机阶段(以太坊)
以太坊在比特币开创的理念基础上加入了图灵完备的虚拟机,从而泛化了区块链计算机。这意味着开发者可以在去中心化的计算机网络上部署和运行任何程序。
在今天的以太坊中,为了确保真实性,网络中的每个节点必须运行每个程序功能。这导致以太坊运行缓慢、使用成本昂贵,但以太坊在一个维度是无可匹敌的:它的计算是去信任的。每个程序都能被按照指令运行,其结果或状态,对所有其它节点而言都是可见的。因此,以太坊的程序可以作为可依靠的、中立的构建模块,开发者可以将其组合成更高阶的应用。目前已有这样的项目:
Marble 这个项目可以让用户快速放贷,进行外汇套利:
交易者可以从 Marble 银行借款,在去中心化交易所买代币,再在另一家交易所以更高的价格卖出代币,然后还款给「智能合约」银行,将套利所得收入囊中,这一切操作全都包含在一次自动交易中。为实现这一功能,Marble 借助以太坊的单例虚拟机,让不同的独立项目执行一系列的功能,最终实现了任何人都可以使用的简化版多功能应用。
Primotif 是一个金融衍生品,可以追踪现实世界中的指数,例如标普 500 指数:
它利用预测市场平台 Augur 的 shares 系统来追踪基准指数的价格,dYdX 做空代币来对冲以太坊代币 ETH 的波动性,dYdX 利用的是 Maker 推出的 Dai stablecoin 系统。仅用一个周末就打造出的 Primotif 项目,正是可组合性会带来复合型创新和强大开发者网络效应的绝佳例证。
可组合性可以带来网络效应早已不是什么新鲜事了。下文是 Twitter 创始人 Biz Stone 于 2007 年就 Twitter API 的可组合性所发表的言论:
“API 是最为重要的,甚至可以说我们在 Twitter上做出的最重要的事情。首先,它让我们的服务变得非常简单,仅仅创建一个简单的 API,开发者就可以在 Twitter的基础架构上进行开发,提出一些比我们的创意更出色的创意,然后开发出像 Twitterrific 那样的产品。Twitterrific 的开发团队很小,但是他们让用户可以优雅、漂亮地使用 Twitter,这一点连我们都没法做到。API 能轻松吸引到比 Twitter 网站高出 10 倍的流量,因此它对我们而言非常重要。”
不幸的是,可组合性在 Web 2.0 时代没能得到延续。原因之一是:无法通过 API 完成金钱交易,也没有公平有效的办法对平台的规定进行管理,例如:广告展示规定。这就导致了开发者和平台之间的激励分配不合理,结果造成了数据重新中心化,以及第三方创新的缺失。
我的投资合伙人 Chris Dixon 曾专门撰文阐述,加密货币如何能在可持续的开放式网络中实现更好的激励分配。现在的问题是,能实现激励配置、具有可组合性的网络不具备可扩展性。
这就是区块链的「大型机阶段」。由于区块链的可组合性——共享的安全性、用户群、数据和运行代码,我们可以享受到早期的网络效应,这是毋庸置疑的。不过,随着用户的人数逼近大型机的吞吐量限制,边际收益就会随之下滑。反过来,吸引单个新用户和开发者的成本也会随之上涨。大体趋势如下图所示:
由于资源限制,每个新用户的边际成本会不断增加,最终超过可组合性的边际价值(即共享资源和开发者网络效应)
进入「服务器阶段」
在对可扩展性的探索中,一些开发者彻底抛弃了可组合性和共享网络效应,转而致力于开发专门适用于特定应用的架构。Polkadot 和 Cosmos 等项目的理念,就是打造多条混合区块链,然后针对相应的应用调试每条区块链。Polkadot 的 Substrate 和 Cosmos 的 SDK 都是模块化的区块链构建工具包,用来帮你推出你自己的全栈式「应用链」。
相比在现有网络资源基础上进行整合,开发全栈式「应用链」的工作量要大很多。对开发者而言,意味着要打造下至状态机、上到应用交互,还要自行为网络部署最小化可行安全措施,估算出与系统中其他成员的协同工作能力。
但在历史上,全栈式开发策略已经被证明大获成功,这种策略可以将初期技术推广到市场上,让用户更早拥抱未来。在个人计算机应用还未普及之前,王安科技公司(Wang Technologies)就提供了功能非常实用的文字处理器,为用户提供捆绑式软硬件解决方案。后来美国在线 AOL 同时捆绑了互联网接入服务商 ISP、内容提供商、电子邮件服务商和即时通讯服务商等多重角色,为早期的互联网用户提供了不俗的用户体验。为了推动智能手机的普及,黑莓手机制造商 RIM 同时捆绑了移动设备、操作系统、以及 BBM 和邮件推送等早期应用。
全栈式平台,让用户更早拥抱未来
在互联网发展的初期,每家网站背后都有一台定制的服务器在运行。为了拥有端对端的体验,开发者需要拥有自己的硬件设施。而在未来的区块链计算时代中,也同样是这种情况。这就是我所说的「服务器时代」。
「服务器阶段」的区块链明确地用可组合性换取控制权。这会通过两个维度呈现:对终端用户体验的控制,以及对网络供给侧资源的经济因素进行更为精细的控制。一个假设是,「服务器阶段」的区块链基础设施(例如:安全、存储和运算),是需求受限制的状态。也就是说,随着应用的普及,它们可以被按需扩展。这与「大型机阶段」的基础设施是截然相反的,「大型机阶段」的资源成本随网络上所有其他流量的变化而变化。具体理论依据是:全栈式「服务器阶段」的架构可以减小升级「大型机」区块链的风险。
「服务器阶段」的区块链与之前的全栈式平台是不同的:它首先仍是区块链!王安的文字处理系统、美国在线和 RIM 都是封闭式平台,而「服务器阶段」的区块链依然是能证实的开放数据架构,配置有可编程的激励机制。这种特性让「服务器阶段」区块链能被整合成数据集散中心(这正是 Cosmos 和 Polkadot 两个项目的目标)。一条区块链可以成为另一条区块链的「轻客户端」,开发者可以打造自动交换机制,或者延展性能。
这意味着,即使「服务器阶段」的区块链仍然具有可组合性,但是却在与「大型机阶段」的区块链在不同的维度上。与「大型机阶段」区块链运行单一的虚拟机不同,「服务器阶段」的区块链计算机需要新的相互通讯标准,以实现跨应用的组合。这种通讯界面是当前的研究和标准化项目所要实现的目标,毫无疑问,这会让开发人员在处理可组合性时遇到更复杂的问题。但是撇开这个缺点不谈,捆绑可能会成为促生新一波区块链架构的催化剂,我预计在短期内我们会看到更多的项目采用全栈式的方法。
「云计算阶段」
「云计算阶段」意味着实现可扩展、可泛化的无信用运算。这是区块链发展的理想时代,组合工作只受创造力的限制,而不是受制于扩展性或通讯复杂性的限制。届时,大量创新不断涌现,相辅相成,不会遇到边际收益递减的尴尬。
怎样才能实现区块链的「云计算阶段」?目前开放研究还在探索这个问题。「服务器阶段」架构的支持者认为,通过实现异质(heterogeneous)区块链之间跨链通信的标准化和抽象化,以获得「云计算阶段」的体验。而以太坊 2.0 的开发者和 Dfinity 团队等其他开发者,则正在聚合同质(homogenous)的图灵完备的区块链。你可以将此视为一个许多「大型机」共存的世界,这些「大型机」共享一个安全池,但在同质虚拟机之间分离状态和运算。另外,还有很多人正在研究将运算转至链下的全新架构。
鉴于研究社区的规模之大,以及这种解决方案巨大的潜在回报,如果「服务器阶段」接近尾声,「云计算阶段」区块链计算便紧随而来,我不会感到惊讶。因为,我们已经铺设好光缆,建造了数据中心,「云计算阶段」的区块链计算主要就在于软件创新。无论我们何时迎来这个时代,很清楚的一点是:无信用的可组合性将成为开发者新的超能力。当开发者能以较少资源实现更多的成就时,互联网将具有更强的协同性、更多的创造性、更多的选择性,而我们就是受益者。
那么,当前的区块链计算是处于哪个阶段呢?请留下你自己的意见