加密投资笔记:Web3中间件与赛道Mapping
无论是Web3底层基础设施,还是各类应用都在迅猛向前发展,今天我们把目光放在两者的“粘合剂” — — 中间件。
Web2世界各种各样的应用都是由中间件(现在大部分中间件均作为云服务来提供,简化了开发和管理工作)支持的,它不仅屏蔽了底层操作系统的复杂性,使程序开发人员在一个简单而统一的开发环境下,保持快速、经济高效的应用开发的同时,中间件也有力支持了应用环境在高度分布式平台上平稳、一致地运行。
开源软件产品提供商 Red Hat对中间件的定义是这样的:它是为操作系统之外的应用提供公共服务和功能的软件。无论是数据管理、应用程序服务、消息传递,还是身份验证和 API 管理通常都由中间件处理。
简单说,中间件相当于应用、数据与用户之间的纽带。它不提供传统应用程序的功能,它将软件连接到其他软件。
大多数现代科技公司和应用都可以被提炼为商务和业务数据生产和搭建在数据之上的模型,以及对数据/模型的控制和分配。区块链的核心也是一个记录着账户余额、智能合约代码和程序状态的数据库,不同Layer1s的最大差异在于采用何种共识协议,以处理数据库更新、交易顺序确认和新规则治理的问题。过去这么多年,加密社区的重点集中在如何构建一个“更好”的数据库,因而,除Ethereum之外,目前还有Solana、Avalanche、Celo、Sui和Aptos等公链项目在积极搭建生态。
我在此前的笔记梳理了整个加密行业框架,展示了各个协议层(或基础层)和应用层的发展现状和头部项目。当前,两个赛道已经汇聚了海量有才华的开发者和团队,Ethereum、Arbitrum、zkSync、Op Network和Starkware等,都获得了巨大进步。实际上,阻碍应用规模落地的原因更多来自两者间的摩擦,弥合两层之间的“鸿沟”决定了区块链生态能否升级到下一个层次的关键。
让我们先把目光放在Web2的单体App架构,来了解Web3应用的差异。从下图可以看到,Web2的App一般由前端、服务端和数据库三部分组成。其中前端/客户端是直接面向用户的界面,服务端的代码主要是编写业务的服务端逻辑,后端的数据库,或者说服务器存在意义在于为前端提供接口和数据来源,这些数据库往往由商业公司控制。
相比于Web2的App,Web3背景下去中心化应用(DApps)的最大不同点在于:它们的核心功能需要与智能合约直接交互。我们上文中提到,区块链的核心是数据库,只要运行在数据库上部署的智能合约,就可以更新整个数据库的状态。
下图是一个DApps基础架构图,我们可以从图中看到,用户既可以在前端通过网络节点服务商直接访问区块链网络,也可以在各类应用服务端通过加密钱包(比如Metamask)签署签名再调用服务商进行访问。DApp连接上区块链网络,也需要包括Infura、Alchemy和Pocket Network等项目提供节点服务。另外,整个流程中需要包括The Graph等在内的indexer对相关数据进行组装,并提供给开发者查询。由于我们构建的是去中心化应用,理论上包括视频、图片、元数据和其他业务数据等数据的最佳存储方案是去中心化存储,比如Arweave、Filecoin等。
让我们把注意力拉回到中间件。
中间件是应用、数据与用户间的纽带,从广义上讲,它涵盖了数据管理、应用程序服务、消息传递、身份验证、数据检索/共享和应用编程接口(API)管理等一切内容。类似的概念放在Web3,我们可以将Web3中间件理解为它们作为服务DApp的DApp而存在。
一个最直观的例子是预言机(Oracle),类似Chainlink这样的解决方案主要为去中心化应用访问数据源并提供所需的应用数据,无论链上还是链下。实际上,在协议层和应用层之间还有很多中间件的发展空间,如果我们按照Web2商业公司搭建的数据基础架构,按照数据源→数据抽取和转换→数据存储→查询和处理→转换→分析和输出整个流程来梳理,当前的Web3中间件项目也涵盖了远程程序调用(RPC)、索引器(Indexer)、存储(Decentralized Storage)、访问控制(Acces Control)、链下计算(Off-chain compute)、数据库/数据仓库/数据建模等众多类别。
分布式存储(Decentralized Storage)
存储是基础计算的基本要素。
区块链本身并不是为存储大量数据而设计的。因此,出于成本的考量,除了将少量重要数据存储在智能合约,大部分的DApp和Web2 App采用的是相同的状态,即由开发者部署在云服务器,再下载到用户客户端执行。但越来越多的DApps接下来必然会寻求没有中心化单点故障或审查风险的数据存储层,以避免网络中断、服务器宕机、DNS劫持等故障和攻击。
对于Filecoin、Arweave等当下的主流去中心化存储类项目来说,它们解决的问题围绕在确保各节点/各存储供应商真实有效地保存了存储需求者的上传数据,并让多个节点/存储供应商分别保存上传数据以实现存储冗余和可靠性等方面。
不同的解决方案也提供不同程度的持久性和抗审查性。Filecoin采取的是经济激励方式(采用时空证明(PoTS)和质押机制),Arweave则通过协议设计从技术上来实现。Filecoin依赖在遍布世界各地的存储供应商间分发内容寻址的(content-addressed)数据集,以增加数据的冗余性和弹性。而Arweave上的去中心化计算则通过 SmartWeave智能合约协议实现,本身就具备直接处理丰富数据的能力,智能合约几乎可以不受限制地包含复杂计算,只需要付出较低的边际成本即可实现。
简言之,去中心化存储降低了服务器故障、DNS黑客攻击或中心化实体移除对DApps前端的访问权限的可能性,即使DApps的开发停止,前端和通过该前端访问智能合约的权限也可以继续存在。
该赛道项目:IPFS, Filecoin, Arweave, Sia, Storj, Swarm, Crust Network, Pinata等。
索引器(Indexer),CDN加速
随着应用程序和用户交互产生的数据激增,数据库系统中有海量存储着表数据的数据页时,采用合适的索引才能方便定位相应的数据。数据读取查询和检索速度影响着用户体验,对应用的流畅度至关重要。
不仅Web2的分布式数据库面临该问题,Layer1s本身的去中心化特性也面临着检索难的问题。
由于带宽是有代价的,因此必须激励存储节点在需要时提供数据。围绕在去中心化存储项目之上出现了很多旨在检索、读取加速与数据缓存(CDN)项目。以Arweave网关层项目为例,由于Arweave出块要2–10分钟,上传完交易后要等打包出块才能下载,网关层就此提供了类似CDN的功能,当用户需要快速访问资源时,可以直接从网关层读取,而原本要上传Arweave的数据信息,会由它们对交易进行 bundle,并保证在一定时间内上传到 Arweave。而类似Arseeding这样的项目则通过轻节点支持数据缓存,并提供高速的下载服务。当然,其他同类项目还有Fleek、Theta、Meson和Saturn等。
而对于通用型Layer1s,目前包括The Graph、SubQuery、Dune Analytics等数据索引服务商的商业模式已经较为成熟,核心业务逻辑均是在对监听的以太坊智能合约事件进行定义和分类后,按照标准化的格式将新索引的数据切换到他们基于API的调用解决方案,以便用户进行抓取和使用。
该赛道项目:The Graph, SubQuery, Covalent, Nxyz, Blocknative, Mesen, Render Network等。
远程程序调用(RPC)
RPC是远程过程调用(Remote Procedure Call)的缩写形式,它是指计算机A上的进程,调用另外一台计算机B上的进程,整个调用、请求、应答和返回过程对于开发人员来说是透明的。在区块链生态中,需要一种能够降低进入门槛并简化对以太坊数据访问的实用程序。比如Metamask显示用户的余额,它需要通过指定的RPC节点提供的RPC接口来调用相应账户的链上资产数据进行展示。
目前,许多知名的区块链项目,如MetaMask、Uniswap、Gnosis等都是利用中心化节点运营商Infura的数据中继服务将其应用程序连接到以太坊网络。而NFT领域的头部项目则多采用Alchemy。而Quicknode则拥有Dune Analytics、Nansen等大客户。
此外,还有Pocket Network等去中心化节点运营服务商,它们的核心部分由其网络中的全节点运营方提供,相比开发者自行运行公链全节点更省钱省力的同时,也拥有比中心化服务商更好的鲁棒性,避免单点故障的可能性。
Pocket Network的业务结构由一条主链+节点运营商网络构成,它本身并不直接为应用提供数据中继服务,而是提供了一个由全节点供需两端组成的双边市场:市场的一端是需要调用全节点数据的web3应用,另一端是不同的全节点运营商运行的节点集群。
该赛道项目:Infura, Alchemy, Pocket Network, Quicknode, Ankr等。
访问控制(Access Control)
访问控制旨在将各种安全功能从上层应用中抽象出来形成一种通用和标准的安全服务,简化应用开发的复杂性和增强安全功能的可重用性。Web3情境下,可以简单理解为指定一个访问控制框架,以便区分哪类用户对相应数据内容和功能的访问权和访问的方式,以及相应的加密/解密规则等问题。例如持有相应NFT或相应Token,即符合设定的访问权限。
该赛道项目:Guild.xyz, Collab.Land等。
预言机(oracle)和链下计算(Off-chain Compute)
对于建立在Layer1s上的DApps,其活动产生的数据除了存储外,还需要灵活计算,因为用户需要的不仅仅是直观的链上账户余额。
传统云服务通过共享计算资源的方式实现了更高水平的可扩展性、灵活性和成本节约。目前,不少区块链游戏、元宇宙类项目也还是将前端和后端部署在 AWS、谷歌云等中心化云服务上。很多项目为了实现复杂功能,不得不依赖于链下基础设施,如oracle、keepers或链下计算,以维持简单的用户体验。
这类项目的核心机制在于:从公共数据源读取公开数据,并对其进行计算,再将新计算出的数据存储回任意存储库中。可验证计算的需求场景包括但不限于: 链上投票、可变NFT、链上游戏和跨链计算等等。
该赛道项目:Oracle, ChainML, Holochain, Stratos等。
去中心化数据库/数据模型
Web2应用的数据存储有文件系统(File System)和数据库(Database)两种基本方式。与传统中心化数据库相比,去中心化数据库有其独特优势,它能降低Web3项目单点失败风险,让DApps完全去中心化。
随着时间的推移,链上账户、状态和智能合约的数量在迅速增长,开发者面临的一个问题是如何将初始数据进行数据的标准化,包括标准的数据格式和标准的数据模型,以实现数据的可组合。
可组合的初始数据是新时代创新的关键场景。目前领先的区块链项目是Ceramic和Lens。在Ceremic中,数据以流的形式存储和管理,格式化的事件日志将会被添加到流中,而日志也被制成文件并上传到 IPFS。这样的做法让数据在各种应用中得以被复用。据此,项目方也自然而然地有了建立一个开源数据模型交易市场的规划。
另一个基于Arweave的去中心化数据库系统Kwil则采取了一种兼容SQL的方式来实现Web3数据模型,它使用一个节点网络来维护关系型数据库,后者由节点的子网来维护,并通过节点来保持系统更新。Kwil的最大优势在于,传统开发社区中有大量熟悉SQL的开发者,更容易建立社区生态。
Space and Time(SxT)是另一个值得关注的项目。它是一个连接链上和链下数据以支持新一代智能合约用例的去中心化数据仓库。SxT允许开发人员以简单的 SQL 格式加入无需信任的链上和链下数据,并将结果直接加载到智能合约中,以完全防篡改和区块链锚定的方式,为用户提供亚秒级查询和企业级分析。关于SxT更多的细节,我们之后会进行更多的研究。
如果梳理互联网数据行业发展历史,我们会发现:在移动互联网崛起前,市面上大多是数据源类公司,到了2010–2014年,数据存储和查询项目及各类数据抽取和转换的项目开始出现。我们上文提到的Filecoin和Arweave等去中心化存储类项目可以说已经被价值发现,随着对链上数据的不断深入,更多关于数据查询及数据库/数据湖等项目将迎来更多关注。
该赛道项目:Ceramic, Space and Time, KwilDB, KYVE, Tableland, WeaveDB, Polybase等。
在公认捕获最大价值的协议层和更广泛的应用端之间,中间件往往处于“隐身”的位置,但它们无疑扮演着及其重要的角色:帮助整个系统拥有更开放的数据存储、更高效的数据调用、更合理的访问控制,以及更模块化和专业化的数据组合等等。从某种程度上来说,真正关键的中间件看起来更像是公共物品,这意味着一个广阔的潜力空间。当然,在抵达理想之地前,一个公众可接受的费率也是用户/开发者愿意为迈向此支付的成本。
本文来源@Jane2yolo