博客文章

扩展区块链的读写能力

July 30, 2021 | 10 minute read

编者按:本文由Tushar Jain和Kyle Samani共同撰写。

区块链是一个具有特殊的信任最小化属性的数据库。跟其他所有数据库一样,区块链也有以下两种操作:读取和写入。

迄今为止,大部分关于区块链扩容的论述都是围绕写入,通常以每秒交易数(TPS)来衡量。例如以太坊的TPS为15-30,币安智能链的TPS最高为160,Solana的TPS最高达50,000 。在该方面,区块链投资者已投入数十亿美元来扩展区块链的写入能力。

目前,人们对区块空间的需求呈指数级增长,我们预计在区块链读取数据的需求的扩展速度将增长更快。互联网的每个大型应用基本上是某种形式的数据库。在大多数数据库应用中,读取与写入的需求比例在100:1至10,000:1之间。为什么差异这么大?假设您的Instagram账户有10,000名关注者,然后您发布了一张照片,其中有10%关注者打开Instagram并看到这张照片,那么单次写入(上传照片)会产生1,000次阅读。假设有10,000人在交易一项资产,然后您在一家去中心化交易所进行了一笔交易,那么所有的10,000人必须读取这笔交易并更新该资产价格。写入会受到一层区块链可扩展性的限制。随着二层解决方案(例如optimized-和zk-rollups)的上线,以及Solana等高吞吐量网络的兴起,写入量将会激增,导致读取需求呈指数级增长,原因如上所述。

扩展读取能力将是区块链行业面临的下一个巨大挑战。

大多数数据库应用均有特定的数据结构,其中数据库结构是针对系统查询数据定制而成的。例如,让我们看一下Telegram等聊天应用。您可以想象整个Telegram系统是一个巨型数据表,它有四个列标题:用户ID、线程ID、时间戳、消息内容。虽然这种方法在理论上是可行的,但考虑到Telegram的实际用户(5亿+)以及每天发送的消息数量,您就知道这样会导致性能大幅降低。用户每次点击线程时,都需要从同一个表中进行查询。这明显是个大问题。显然,如果您能够局部查询(即不是所有查询均点击同一个数据表),那么情况则会好一点。

您可以想象一个替代的数据结构。让我们假设每个线程均存储在一个单独的表单中,该表单有三个列标题:用户ID、时间戳、消息内容。用户点击Telegram UI中的线程时,系统知道哪个表存储该线程中的所有消息,并向该表单查询新消息。该结构对查询进行了限制,从而大大提高了性能。

据定义,区块链中的扩展读取能力的问题在于,区块链并未规定交易格式。区块链只是由一系列交易组成。任何人均可随时提交任何交易,任何交易均可是任何格式,也可能是任意复杂度。

区块链上的所有交易都会写入某个表单中。通过上面的Telegram示例,您已经了解产生严重性能问题的原因。在区块链中,因为不存在具有特定数据结构的单一类型应用,因此该问题更加严重。目前区块链上有成千上万个应用,它们的数据结构不同,用例各异。

标准以太坊客户端Go Ethereum(GETH)具备一些基本查询功能。例如,用户可询问GETH“这个地址有多少个ETH?”此外,通过以太坊的数据结构默克尔树,GETH可轻松地回答该问题。

现在让我们思考一个更复杂的问题,比如“这50个Uniswap流动池中的TVL分别为多少,所有流动池的TVL总数是多少?”

要回答该问题,首先需要了解Uniswap资产池是什么,以及其中资产的价格。

默认情况下,GETH无法回答该问题,因为它本身甚至不知道Uniswap流动性池是什么东西。

总结一下,这里有三个不同但相关的问题:

  1. 扩展读取能力
  2. 了解数据结构,知道需要查询什么
  3. 提供抵抗审查查询结果

查询区块链数据对开发人员来说比较困难,要解决这些问题,需要一个稳健且可扩展的解决方案。其中,The Graph是一个去中心化索引协议,是解决这些问题的领先项目,如果取得成功,它将成为“Web3世界的谷歌”。

Multicoin Capital早在2018年便投资了The Graph,该公司认为查询层将发展成为Web3堆栈中最重要的环节之一。本文回顾了索引项目The Graph,目前该项目正处于关键的转折点,无论是在其发展历史还是对整个加密行业而言。The Graph托管服务已发展成为加密领域最受欢迎的产品之一,并且它已实现其初始目标。现在,The Graph正在向去中心化网络迁移,随着该项目推进这一转变,上述的所有三个问题都能够解决,为完全去中心化应用创造契机。

实现去中心化是一回事,对去中心化进行扩展又是另一回事。在过去一年中,The Graph查询量增长了20多倍仅在2021年5月就处理了超过250亿次查询。The Graph Foundation最近提供了两笔大型资助,帮助The Graph在读取问题上进行扩展。第一笔拨款给了StreamingFast,一支利用其专业知识帮助从根本上提高索引性能的工程师团队。第二笔拨款给了Figment,一支帮助任何人更容易启动The Graph节点并增加网络供应的团队。

随着第一代子图从托管服务迁移至去中心化协议,The Graph的完整愿景开始显现,网络效应快速增长。

无限扩展读取能力

所有加密网络的基础都是将激励(和惩罚)编码到软件中,以便在没有中心化协调实体的情况下,促进不信任方间大规模协作。这就是这些系统实现信任最小化的原因。

简而言之,这种框架提出了一种无限扩展读取能力的新方法:设计加密经济博弈,以激励理性、经济驱动的行为者为查询数据者执行读取服务,从而允许网络的供应方自我调整,最终满足需求。

在以往,各种企业一直在构建中心化服务,并按照传统方式进行扩展:招聘大量程序员、开发运营团队,并管理一堆服务器。他们将花费数百万工时来架构和重新架构系统,以优化性能和成本。

The Graph协议具有以下特点:1.激励独立、理性的参与者存储和索引大规模数据集的子集(受支持区块链的所有数据);2.帮助该服务的用户找出哪些参与者正在存储每个子集;3.确保这些查询提供程序返回有效的响应(不返回错误的结果);4.方便支付。

如果索引者(提供查询服务的参与者)无法满足所有需求,那么会发生什么情况?

在供不应求的情况下,市场参与者(现有索引者和外部人员)将通过监控区块链的支付流来实时观察这一情况。拥有多余资源的用户(或者可轻松获取资源的用户)将下载并运行The Graph软件,在The Graph的智能合约上注册,来变得可发现,索引需求数据集,并开始为用户处理查询。整个周期可持续数分钟或数小时,且可100%自动化。

总结:随着对查询服务需求的增长,理性、有经济动机的供给会自我调整,来满足该需求。Kyle在几年前就阐述了这个论点

扩展数据结构

目前解决数据结构问题的技术方法有两种:

1)GETH提供所有Uniswap流动性池以及所有相关交易(例如存款、取款和交易)列表,然后将TVL计算作为GETH以外的程序。每当有人提出该问题时,便重复计算操作,得出最新的数字。

2)用户定义一个单独数据结构,因此每当将新交易添加至大型数据表(即以太坊交易列表)末尾时,系统会检测该交易是否与增加或减少Uniswap流动池的大小有关,如果有关,则更新GETH外部数据库中的适当附加数据字段。

The Graph提供了一个框架,用于具体说明数据结构以启用解决方案#2(称为子图清单)、基于这些清单文件的数据库索引服务以及跨去中心化节点网络运行的实时查询系统。

此外,The Graph向使用GraphQL(Facebook在2015年发明并开源的查询语言)的开发人员公开了查询。GraphQL非常容易使用,现在公认为是开发人员查询接口的黄金标准。这里是一些解释GraphQL优秀技术信息。

目前还有其他试图解决该问题的方案。我们将市场细分如下:

The Graph Graph

Pocket network的想法非常有趣,并且它是网络右下角唯一的一个项目。但是,The Graph的成功证明了开发者更喜欢使用GraphQL和子图来进行构建,而不是使用GETH节点的RPC调用,因为前者更快、更容易。

扩展抵抗审查性和安全性

The Graph最大的竞争对手是Infura。但Infura是一项简单服务,实际上它是数千个GETH节点前的负载平衡器。Infura甚至不计划提供更高级别的抽象(即上图中的“查询优化”)。与Infura的规模相比,所有其他竞争对手的实力都比较弱。

对于使用它的dApps来说,Infura是一个主要的瓶颈。为了提供抵抗审查服务,dApp必须消除对它的任何中心化控制。如果攻击者可以使用Infura导致用户无法使用dApp,则属于主要的攻击向量。而The Graph是一个由独立社区组成的全球网络,主要运行基础设施来提供查询结果,因此可提供抵抗审查服务。

在Graph索引者返回错误响应的情况下,它们可能会受到重大处罚。只要任何人(无论是请求查询者还是第三方钓鱼者)检测到索引者产生了无效结果,它就可以向区块链报告无效响应,而区块链自身将作为真相的最终仲裁者。假设索引者说谎,区块链将罚没索引者的保证金(以GRT代币形式),并奖励举报恶意行为的参与者。

这意味着由索引器质押最大价值的最大查询生态将是最安全的查询系统。这种扩展将产生如下反馈循环:

The Graph Flywheel

结论

为什么需要去中心化?因为它有助于:

  1. 真正无服务器应用能够抵抗审查且无法关闭
  2. 将数据移近到“边缘”来减少延迟并提高性能
  3. 从每天数百万次查询扩展至每天数万亿次(你没看错,单位是“万亿”)查询的更有效方法。

当人们谈论去中心化的时候,他们通常局限于抵抗审查的语境(例如比特币)。实现这一点的主要机制只是纯粹的冗余。

在The Graph的情况下,去中心化可以保证抵抗审查和可扩展性。世界上所有地方的任何人都可以运行The Graph服务器,他们可实时查看每个子图的查询需求。因此,世界各地眼光独到的开发人员/计算机迷都可以查看某个特定子图是否得到充分的服务,并且可以快速启动The Graph节点,开始为查询提供服务并获得收入。这是The Graph无限可扩展的关键因素,也正是这一点保证了审查抵抗性。

这,便是去中心化的力量。

Disclosure: Multicoin has established, maintains and enforces written policies and procedures reasonably designed to identify and effectively manage conflicts of interest related to its investment activities. Multicoin Capital abides by a “No Trade Policy” for the assets listed in this report for 3 days (“No Trade Period”) following its public release. Multicoin Capital owns GRT.

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

联系方式