来源:以太坊爱好者
比特币是区块链计算的鼻祖。
编者注:在区块链世界里,”可组合性(Composability)” 一词最早被用来说明免许可智能合约平台的长处,即同一平台上的组件可以相互组合,产生出新的产品和服务。本文作者意识到了,可组合性不是 0 与 1 的区别,而是程度的区别,因有此文。作者对 Cosmos 等项目的分析可谓别开生面,但对所谓 “云时代” 的描述则多少有些异想天开了。应当承认的是,演化之路的神秘与优越,正在于其不可完全控制;而取得了这一点认识,就没有必要总把眼前事物附会成演化的必由之路了。
作者: Jesse Walden
翻译&校对: 曾汨 & 闵敏
在 a16z crypto 网站上的一个视频中,我们谈论了许多关于密码学网络和城市之间相似性的问题,因为二者都通过共享基础设施来实现自下而上的发展。
通常来说,传统商业的最佳模式是,把店铺开设在一个人口密集、公共设施完善、法律完备、治安良好,且充满市场活力的地方。对于开发者来说也是如此,在共享现有用户群、数据、安全性和代码等资源的基础上进行构建会获益不少。
我们称之为可组合性。 如果一个平台上的现有资源能够用来构建更高级别的应用程序,那么这个平台就具备了可组合性。
可组合性非常重要,它能让开发者花费更少的资源做更多的事情,继而加快创新的速度并增强其复合性。
区块链计算机的免信任特性是其实现可组合性的一大重要条件,因为它能让开发者在共享的基础设施上进行构建,同时不必担心底层被突然叫停。这是真的,因为区块链既是无准入门槛的(这就是开源的伟大之处)又是富状态的(这就是像 Twilio 和 Stripe 之类的 API 的伟大之处)。
在研究区块链计算的发展时,我勾勒了一个由四个不同时代组成的心理模型,每个时代在架构和可组合性方面的优先级上各不相同:
计算器时代——面向特定应用,可组合性有限
大型机时代——图灵完备,可组合性高
服务器时代——面向特定应用,不具备可组合性
云时代——图灵完备,具备可扩展的可组合性
我将逐步展开介绍每个时代,以及在我眼中它们各自的优缺点。但是我先声明,这个领域中的很多研究问题是没有明确答案的,而且事物的发展方向并不明朗。每一个问题都需要实验。
计算器时代
比特币是区块链计算的鼻祖。它是一个面向特定应用问题的全栈解决方案:健全货币或者说数字黄金。除了具备追踪余额和转账等简单的功能之外,比特币还提供了一种脚本语言,可以用来构建更复杂的功能。
许多项目已经使用了比特币脚本语言来构建更高级的应用程序。举例来说,存在证明( Proof of Existence )利用 OP_RETURN 数据存储来创建一个证明,以此证实某个人在特定时间内拥有一份数字文件。像 Colored Coins 和 Counterparty 这样的项目可以基于比特币区块链的集中安全性创建自定义代币。但是,由于比特币的脚本语言在设计上有意留下了一些限制,其他一些企图进一步扩展比特币功能或代币功能的尝试就无法实现了。
许多人认为,对于一个去中心化的货币系统来说,最重要的属性是安全性,而非可编程性,因此有限制的脚本语言是一个特性,而非一个 bug 。由此我们可以看出,比特币更像是计算器而非计算机(我是认真地在夸!)。它是针对特定目的构建的,并且擅长处理目标任务,但对于热衷改进和构建新型应用程序的开发者来说,需要向新的架构演进。
大型机时代
以太坊是构建在由比特币开创的核心理念上的,并纳入了图灵完备的虚拟机来使区块链计算机变得更加通用。这意味着开发者可以在去中心化的机器网络中部署和运行任何程序。
如今,网络中每一个节点都必须执行每一个程序功能,以便确保其准确性。这就造成了以太坊效率低下且成本高昂的问题,但是它有一个方面是无敌的:它的计算不依赖于人的主观信任。每个程序都会如我们所期望那样按部就班地执行(并通过验证),并且它的输出或状态可供他人查看。因此,以太坊上的程序可以充当可靠且中立的基本构成要素,供开发者用来编写更高级的应用程序。于是,我们看到了下面这些项目:
Marble 提供的是通过快速借贷实现交易套利的服务:”交易者可以通过 Marble [智能合约]银行借款,到一个去中心化交易所(DEX)上购买代币,再到另一个去中心化交易所上以更高的价格卖出代币,然后还清借款,将套利所得的利润收入囊中,所有这一切都通过一笔小小的交易达成。” Marble 之所以能做到这点,是因为它利用以太坊虚拟机跨越不同的独立项目来执行一系列功能,最终构建出了一个人人都能使用的简单实用程序。
Primotif 是一个可以追踪现实世界指数(比如标准普尔 500 指数)的金融衍生品。它使用 Augur 上的预测市场来追踪标的指数的价格, 然后利用 dYdX 的沽空代币来对冲 ETH 的波动性, dYdX 使用的是 Maker 发行的稳定币 Dai 来作为报价货币。这个仅仅花费一个周末就构建完成的项目是个很好的例子,体现了可组合性是如何带来复合式创新和强大的开发者网络效应的。
通过可组合性带来网络效应不是一种新的现象。这是 Twitter 的创始人 Biz Stone 早在 2007 年就(在 AVC 网站上)发表过对 Twitter API 的可组合性的看法:
“我们在 Twitter 的 API 上的投入可以说(或者无疑)是我们做过意义最重大的一件事。首先,这可以让我们以非常简单的方式来服务用户,并创建一个简单的 API 以便开发者可以在我们的基础架构之上进行构建,提出比我们更好的想法,并构建像 Twitterrific 这样的程序,它由一个非常小的团队开发,为 Twitter 用户带来了绝佳体验,这是我们根本做不到的。因此,API 很容易就能带来比网站多 10 倍的流量,它对我们来说非常重要。”
遗憾的是,可组合性并不适合 Web 2.0 时代的场景。问题在于,你既不能 “通过 API 汇款” ,也没有一种有效公平的方式来控制平台的规则,比如广告展示的规则。这就造成了开发者和平台之间激励失调,从而导致数据的重新集中化和第三方创新的缺失。
我的合作伙伴 Chris 曾经写过一篇文章来讲述密码学代币是如何能够更好激励可持续开放式网络的。如今的问题在于,兼顾激励协调和可组合性的网络无法扩展。
这就是区块链的大型机时代。尽管可组合性确实带来了早期的网络效应——集中安全性、用户群、数据和代码,但是由于大型机的吞吐量限制,采用量的增加会造成边际收益递减。这反过来会驱高每一位新增用户和开发者的成本。绘制成图表则如下所示:
-由于资源限制,每新增一位用户会带来更高的边际成本并最终超过可组合性的边际值(共享资源和开发者网络效应)-
进入”服务器时代”
为了寻求可扩展性,一些开发者已经放弃了前面提到的可组合性和共享网络效应,转而采用面向特定应用的架构。像 Polkadot 和 Cosmos 这类项目的愿景就是构建一条多重的异构链——其中每条链都会进行个性化调整来打造定制化应用程序。 Polkadot 的 Substrate 和 Cosmos SDK 都是模块化的区块链构建工具包,用于构建你自己的全栈 “应用程序链(app chain)”。
全栈开发的工作量要远超出整合现有的网络资源进行开发所需的工作量。对于开发者而言,这意味需要构建下至状态机、上至应用程序接口的所有部分,为网络带来最低程度的可行安全性,并与生态系统中的其他项目实现互操作性。
但从历史上看,全栈策略在推动未来发展和将早期技术推向市场方面已经取得了成功。早在 PC 应用达到标准之前,Wang Technologies 就推出了一个非常实用的文字处理软件作为软硬件捆绑的解决方案。在这之后,AOL 捆绑了一个网络服务提供商,一个内容分发系统和一个邮件和即时通讯工具——为正处于建设中的早期网络带来了卓越的用户体验。RIM 为了促进智能手机的采用,将移动设备、操作系统和类似 BBM 和电子邮件推送等早期应用捆绑在了一起。
-全栈平台,推动未来前行。-
在网络发展的早期,每个网站都有一台定制的服务器在某个机房里运行。为了获得端对端的体验,开发者也需要拥有一部分基础设施。等到了区块链计算的第三个时代,情况可能相同。这就是我所说的 “服务器时代”。
“服务器时代” 的区块链为了获得一定的控制权明确放弃了可组合性。这涉及到两个方面:对终端用户体验的控制,以及对网络供给端资源经济更为精细的控制。”服务器时代”架构的设想是诸如安全性、存储空间和算力之类的网络资源都受到需求的约束。也就是说,随着应用程序得到越来越多的采用,它们可以按照需求扩展。这与 “大型机时代” 架构形成了对比,在 “大型机时代” 的架构中,资源成本会随着网络上所有其他流量的变化而变化。从理论上讲,全栈的 “服务器时代” 架构可以降低像 “大型机时代” 构架那样的优化风险。
“服务器时代” 的区块链与之前的全栈平台不同,因为它们仍然是区块链!虽然 Wang、AOL 和 RIM 是封闭式平台,但”服务器时代”的区块链仍然是可验证的开放式数据结构,具有可编程的激励机制。这个属性使得它们能够构成中心(hubs)(这就是 Cosmos 和 Polkadot 所做的)。一条区块链可以是另一条区块链的轻客户端,开发者可以构建原子交换,并扩展功能。
这意味着即使是 “服务器时代” 的区块链仍然具有可组合性,但是与 “大型机时代” 的区块链不在同一个维度上。这些区块链计算机不再运行单个虚拟机,而是需要新的标准来进行相互通信,以便于实现跨应用程序的组合。这些通信接口是现行研究和标准化的主体,并且无疑会让开发人员在可组合性方面的体验变得更加复杂。但是,尽管存在这个缺点,捆绑的种种优点或将催生新一波区块链架构,我预计短期内将出现更多采用全栈开发的项目。
“云时代”
“云时代” 的目的是调用可扩展的通用底层架构(substrate)来进行无需信任的计算。这是一片应许之地,只要创造力跟得上,可组合性要多高就有多高,不受规模大小和通信复杂度的限制,同时可以在不损害收益的前提下增强创新的复合性。
关于 “云时代” 区块链的运作方式有很多开放式研究。”服务器时代” 架构的支持者认为,实现了异构区块链之间跨链通信的标准化和抽象化之后,我们将迎来 “云时代”。另外像是以太坊 2.0(Serenity)和 Dfinity 等项目正在集中打造同质的、图灵完备的分片链。你可以将 “云时代” 视为一个由许多”大型机”组成的世界,这些 “大型机” 共享一个安全池,但是它们的状态和计算分别由不同的同质虚拟机来处理。还有一些人正在研究将计算转移至链下的全新架构。
考虑到研究社区的规模和这种解决方案的潜在奖励,如果 “云时代” 的区块链计算在所谓的 “服务器时代” 将尽之时大热,我不会感到惊讶。我们已经铺设了电缆且建立了数据中心 —— “云时代”的区块链计算主要是软件创新。等 “云时代” 到来之时,无需信任的可组合性显然将成为开发者新的超能力,当开发人员可以使用更少的资源做更多的事时,互联网会带来更多协作、创造力和选择,我们都将成为受益者。