The Web3 Stack

通過 Kyle Samani

July 10, 2018 | 10 Minute Read

我还没有看到 Web3 堆栈的实际图解,所以做了一次尝试。考虑到 Web3 生态系统的扩展程度,我敢说,以下图示肯定不完整,而且可能有一些不准确之处。

我将重点讲讲我从该图中提炼出的一些最有趣的观察结果。

链闻深度:Web3 堆栈全景剖析

核心堆栈 核心开发堆栈到底需要为 DApp 开发人员提供什么?

它必须为有序且有效的交易提供单一、规范的分类账。

P2P、共识和状态转换机器层共同提供这些功能。今天,以太坊和比特币都只执行这些功能,尽管核心的以太坊协议最终将扩展至包括分片。

相对于图表右侧「可选组件」的团队数量,图表左侧这些组件的团队数量较少。从堆栈底部向上,包含了可选组件,不包括互联网协议:

  • Oasis Labs 正在构建 Ekiden,这是一个中立平台,允许许多链支持基于可信执行环境 TEE 的非公开链下计算。
  • Handshake 正在构建去中心化 DNS。鉴于 DNS 的操作系统默认设置,获得采用将非常困难。
  • Monero 正在构建 Kovri,以在节点之间实现保护隐私的数据包路由,从而保证 IP 等级的隐私包括。Kovri 正在建设中,以支持多个多个区块链。
  • BloxRoute 正致力于开发一种可以跨各种区块链的区块交付网络。
  • 以太坊基金会 创建了 DevP2P,Protocol Labs 创建了 LibP2P。大多数新链在采用这两个框架中的一个,甚至出现了关于以太坊转向 LibP2P 的谣言。
  • 以太坊 和 Polkadot 正在开发全状态分片。

有十几个团队在共识层进行实验:

基于领导者的区块链共识

  • 比特币和比特币现金 ——ASIC 优化的 PoW
  • 以太坊 1.0、门罗币、Zcash、其他 ——抵御 ASIC 的 PoW
  • Kadena ——braided POW
  • Chia ——空间和时间证明 PoST 和经过时间证明 PoET
  • Filecoin ——含有用数据的 PoST
  • 以太坊 2.0 ——Casper TFG 权益证明 POS
  • 迅雷 ——带有 PoW 的 PoS
  • Decred ——混合 PoW/PoS
  • Polkadot ——Honeybadger POS
  • EOS ——委托股权证明 DPoS
  • Tezos ——另一种 DPoS 变体
  • Tendermint ——另一种 DPoS 变体
  • Solana ——历史证明 PoH
  • Dfinity ——阈值中继+概率插槽共识
  • Algorand ——与领导人选举签订的拜占庭协议 BA⋆
  • 无领导 的区块链共识
  • Ripple 共识协议
  • Stellar 共识议定书
  • Avalanche 共识协议
  • 有向无环图 DAG
  • Byteball ——Byteball 主链共识
  • Hashgraph ——哈希图共识议定
  • DAGlabs ——Spectre
  • Blink ——Blink 共识协议
  • Spacemesh ——委员会选择的 PoST,然后是一种「快速+慢速」结合的共识

一些主要的状态转换机:

  • 以太坊虚拟机 EVM——以太坊 1.0、Ethermint、Hashgraph、WANchain 等
  • 网络装配虚拟机 WASM—— Dfinity、EOS、Polkadot、Ethereum 2.0
  • 直接 LLVM 曝光 ——Cardano、Solana
  • 自定义状态转换机
  • Kadena
  • Tezos
  • Rchain
  • Coda

这个列表提出了一个问题:相对于核心堆栈的其他层,为什么有那么多团队在共识层上工作?

显而易见的答案是,因为那儿有钱。

这自然会引出又一个问题:为什么所有的价值都在共识层产生?

共识层是区块链中最大的瓶颈,共识方案受到基本权衡的限制。此外,共识方案是互斥的:单一链条不能同时采用两种共识方案。世界领先的协议设计师认识到比特币 PoW 的局限性,并看到了建立庞大的全球数字储备资产的机会,因此可以在一个价值数万亿的市场中理性竞争。

到目前为止,可以顺理成章地得出结论:鉴于可扩展性三难动态,没有人能建立一个提供基本帕累托改进的共识算法。大多数在共识层进行创新的团队基本上都是押注他们为某些用例子集选择了最佳权衡集。

如果一个团队确实提出了代表帕累托改进的机制,我们何以知道呢?一个简单的回答是,对去中心化区块的出产量进行量化。Dfinity、Algorand、Solana 和其他团队认为这是可能的,不过 Vitalik 并不是这么认为。

共识算法是可以复制的。不过,虽然这在技术上是可管理的参见 Cosmos,它支持 EVM,执行 Tendermint 协议,但在政治上可能无法实现,因为很难改变现有链上的共识算法,尤其是在具有紧密耦合的链式治理的系统中。链式治理越紧密联系,就越难以说服根深蒂固的利益改变(你试试说服 21 个 EOS 代表中的任何一个放弃其令人垂涎的地盘,以期建立更加去中心化、且性能不变的体系。这正是以太坊可以放弃 PoW 转向 PoS)的原因,而原生 PoS 链不太可能愿意做出类似规模的变化。

我们正在对核心堆栈的另一层,即状态转换机器层,进行大量实验。没有建立在 WASM 上的团队,往往会对区块链状态转换机器应该做什么、不应该做什么,存在非常针锋相对的看法:

  • Kadena 认为智能合约必须是人类可读的。
  • Tezos 认为所有智能合约必须经过正式验证。
  • Rchain 认为智能合约应该在 DApp 链中同时运行并得到正式验证。
  • Coda 认为一切都必须贯穿 SNARK,确保即使很小的节点也可以验证链的完整性,从而在最大限度上保持永久去中心化的可能性。

对状态转换机器层进行观察,最有趣的结果是:

  • 许多主要项目已就应用 WASM 达成共识,尽管事实上 WASM 从来无意于被区块链使用;
  • Kadena、Tezos、Rchain 和 Coda 正在进行押宝的特质。

因为加密货币中的所有内容都是开源的,所以可以考虑堆栈的每一层的网络效应。例如,EVM 已达到临界量,考虑到为 EVM 构建的工具、开发人员教育、库等,现在它还具有网络效应。这正是为什么许多其他项目,包括 Hashgraph、Cosmos Ethermint、Wanchain、RSK、Blink 等,决定采用 EVM 的原因,尽管以太坊自身倒是很想摆脱 EVM。

在实践中,我对状态转换机器可跨链移植的观点持怀疑态度。就以 EVM 为例,甚至连以太坊基金会都不想保留它。我的感觉是,开发人员通常不喜欢用 Solidity 写代码,他们这么做,只是因为 Solidity 是关于区块生产和开源软件开发的去中心化的以太坊理论。如果我的假设没错,那么采用 EVM 的非以太坊区块链将不会受益于「EVM 的网络效应」。

而 WASM 的情况可能会有所不同。因为大多数主要的加密团队都希望站在构建和维护 WASM 的巨头的肩膀上,可以猜想,或许存在着一种便携式的跨链网络效应,它围绕 WASM 为区块链构建状态转换机。

如果围绕 WASM 的这种网络效应显现出来,那么开发独家状态转换机的团队将难以保持长期竞争力。

扩展的核心堆栈

有一些元素不是、也不应该是底层链的一部分,并且尚未被认为对 DApp 的开发必不可少,但我相信它们将成为开发堆栈的核心组件:

  • 许多团队正在建造侧链。比特币中最值得注意的是 Drivechains 和 Liquid 。在以太坊体系中,最重要的是 Plasma 框架内的 SKALE ,以及作为主权 DApp 链的 Cosmos Ethermint 。
  • 有许多团队为比特币开发支付通道和状态通道网络,最着名的是 Lightning Labs 和 Blockstream 。在以太坊生态系统中,则有 Raiden 和 Celer 。许多人,尤其是比特币社区内的人,都认为这是唯一的扩容方法。
  • Interledger Protocol ILP 于几个月前完成。相当多的团队正在使用它来实现跨链互操作性。直到最近,包括我在内的大多数开发人员和投资者都没有对 ILP 给予足够的重视。然而,完全可以推测,ILP 将成为 Web3 堆栈中最重要的层。
  • 据我所知, The Graph 是唯一一个为以太坊构建去中心化查询层的团队。以前,在以太坊上构建 DApp 的每个团队都必须构建一个专有的索引基础架构。
  • BigchainDB、OrbitDB 和 Bluezelle 等许多团队正在构建不可变的结构化数据库 见 Web3 图的右下角 作为去许可的独立链。鉴于使用结构化数据库可以提升性能,观察下开发人员是否会选择原生地使用这些系统,或者像 SKALE 这样的团队是否会将这些开源系统作为 Plasma 链,会很有意思。
  • 通常,扩展的核心堆栈相比核心堆栈更加不成熟。基本上这些组件中没有一个以任何有意义的规模生产。因此,DApp 开发人员暂时无法使用这些组件。

随着扩展核心堆栈趋于成熟,我预计 DApp 开发速度将大幅提升。DApp 开发人员原本不应该考虑这些组件旨在解决的任何问题,但是鉴于堆栈的当前状态,他们只能硬着头皮构建自己的堆栈组件,说的好听点,这种做法是低效的。

可选组件 现在存在着各种各样的云 API,从发送电子邮件 Sendgrid 到短信 Twilio 再到地图(谷歌地图),大量「去中心化库」以可选去中心化组件的形式存在。其中每个都可以执行 DApp 开发人员能够选择的一组独特功能。

在这些可选组件服务中,只有少数服务架设在主网上。其中一些例子包括:

Livepeer、0x、Kyber、Storj、Sia、Oraclize 和 Civic 。但是,构建这些组件的大多数团队尚未发布已生产就绪的工具。

这至少部分解释了 DApp 匮乏的现状:没有有用的库,就很难构建有用的 DApp。没有可用的库,每个 DApp 都必须从头构建。

同样有趣的是,大家认识到这些组件中的绝大部分都是为以太坊生态系统而构建的。一些团队,例如 Keep 和 Truebit ,已经公开讨论过支持 Dfinity 作为跨链服务。但是,今天加密生态系统中正在开发的绝大多数基础设施最少会支持 EVM,更宽泛一些的会支持以太坊生态系统。

在接下来的一年里,随着 EOS、Tezos、Kadena、Dfinity、Solana、Tari、Hashgraph 和其他公司推出并打磨他们的区块链,他们要争取赢得建立 DApp 基础设施组件团队的注意力。如今无缝支持跨链开发所需的工具并不存在,因此构建核心链的团队需要竞争,来让这些 DApp 基础设施提供商支持各自的区块链。

如上所述,像 WASM 这样的状态转换机的网络效应可能很大程度上可以跨链进行移植,如果没有任何开发人员的努力,它们不太可能 100% 实现便携。底层链团队是否可以实现基础设施跨链移植,以吸引构建以太坊生态的第一批基础设施开发人员,这一点值得拭目以待。

堆栈的顶部 在大多数堆栈图中,应用程序是堆栈的顶部。但基本上所有加密开发都是以后端为重点,而不是前端。因此,有一些元素存在于 Web3 堆栈中的 DApp 之上。

有趣的是,加密货币圈里几乎没有人在谈论去中心化应用程序的托管。这一点特别让人好奇,因为今天的每一个 DApp 上,这一层都中心化的,要么是因为托管应用程序的网络服务器是中心化的,要以是因为有一个下载链接来下载应用程序并将其安装在客户端设备上,这将生态系统推回到带围墙的花园 walled-garden 模型,该模型是中心化的。在理想的世界中,应用程序主机可以既能去中心化、又能实现实时传递。

为什么基本上没看到针对去中心化应用程序托管的解决方案?我可以确定有两个原因:要么就是该层是否去中心化无关紧要,要么就是这个问题太难,所有没人愿意着手去解决。我怀疑答案两种原因兼而有之。

在任何 DApp 中,只要数据库和资产存储充分去中心化,应用程序主机是否集中就无关紧要。如果政府通过关闭应用程序主机来审查 DApp,DApp 作者可以开源前端代码,并让其他人启动一个新的主机,为同一个后端提供门户。这可能会像 2000 年代的种子追踪者那样发挥作用:关掉一个,会突然冒出五个。

但是,如果你可以让应用程序主机实现去中心化呢?由 Ripple 发起的开源项目 Codius 试图在 2015 年做到这一点,可是之后 Ripple 不再为其分配资源。最近,Ripple 的前首席技术官 Stefan Thomas 离开这家公司,创立了 Cilus ,打算借着 Codius 打下的底子继续开发。看看堆栈的这一层在实践中如何工作,考察它集成到现有 DNS 中的意义 假定现有 DNS 是集中的、可信的应用程序主机,将会很有趣。

最后,堆栈的顶部是最终用户实际与之交互的内容:DApp 浏览器。这包括用于以太坊的 Metamask、Toshi ,以及用于 EOS 的 Scatter 。

第 2 层扩展解决方案 我已经在本文中涉及了这些层,但我认为值得放在可扩展区块链的上下文中重新审视它们。

首先是分片。基于以太坊和 Polkadot 团队所面临的挫折,分片似乎是在技术上最具挑战性的扩容解决方案。即使它有效,也不清楚会有多少人希望它能成为圣杯,我个人也对它持怀疑态度。分片的最大问题是跨分片延迟,放在以太坊中,这个延迟可能是几分钟。这可能会严重限制实际设置中分片的功效。此外,分片会产生各种下游问题,例如:客户端可能不知道根据用户查询,需要读取哪个分。

第 2 层扩容解决方案,包括侧链、支付和状态通道网络以及 ILP,会遇到相同的问题。随着侧链激增,如果用户忘记了自己的资产存放在哪个链时,事情就会变得一团糟。支付和状态通道网络存在严重的延迟问题,而且围绕着流动性路由、资金传输和隐私等方面,各种新问题也将层出不穷。比特币作为储藏价值型区块链,出块时间为 10 分钟,相比之下,ILP 将面临真正的延迟挑战。

设想一下,如果某个用户在一个分片的支付通道中有资金,并且希望将这些资产移动到不同分片上的侧链中,这一切将会多么混乱。

在情况清晰之前,恐怕事情先会变得更加混乱。

未来会怎样?

也许 Web3 堆栈中最迷人的部分就是堆栈本身的去中心化程度。

大多数传统的应用程序开发堆栈,比如 Windows、iOS、Android,几乎完全是中心化的,只有少数第三方开发者库和服务已达到临界量。这与 Web3 堆栈形成鲜明对比,Web3 堆栈由全球数百个团队同时构建!虽然从理论上讲,构建 DApp 时不需要任何超出核心以太坊协议提供的东西,但实际上 DApp 开发人员需要以太网基金会没有也不会构建的各种工具。加密货币是开源合作的巅峰之作,这就是最重要的证据。

考虑到大量 Web3 堆栈仍处于开发阶段,DApp 应用现在非常糟糕也就不足为奇了:今天的 Web3 堆栈状态几乎不可能构建可用的 DApp。像许多其他技术一样,Web3 堆栈将缓慢前进,在超过某个引爆点后迅速发展。

在 Web3 堆栈实现某种程度的可用性、稳定性和功能完整性之后不久,DApp 革命就会发生。

不过,我怀疑,这将是两三年后的事情。

有兴趣加入我们的团队,与我们共事,或者创造一些伟大的东西?

联系方式