去中心化存储 - Web3 的支柱

0xPhillan

在这篇文章里,我们探讨了去中心化存储的需求,并比较了不同网络如何解决围绕去中心化存储的一系列挑战。

本篇内容是完整研究内容的部分摘要,可以在 ArweaveCrust 中下载阅读全部内容。

-作者:@0xPhilan,来自 @FundamentalLabs

声明:Fundamental Labs 及其团队成员可能已经投资并持有本文中提到的通证。这份声明旨在披露潜在的利益冲突,以及本文中的内容仅用于提供信息,不应该被误解为购买任何通证的建议。投资有风险,任何读者不应该仅凭本文中的内容做出投资决定。本文不包含任何投资建议。

为了实现互联网的去中心化,我们无法回避其三大支柱基础设施:共识、存储和计算。如果人类成功地实现了这三个方面的去中心化,我们将完全实现向下一个互联网时代的迭代,也就是传说中的 Web3。

图1:部分 Web3 支柱项目

去中心化存储,实现 Web3 的第二支柱,正在迅速发展成熟,我们已经看到了各种适合特定用途的存储解决方案。在这篇文章中,我们将仔细研究去中心化存储赛道。

去中心化存储的需求

区块链

从区块链的角度来看,由于区块链本身并不是为了存储大量的数据而设计的,因此我们需要去中心化的存储。用于实现区块链共识的机制通过将少量的数据(交易)存放在区块中(交易的集合),并且这些数据信息被快速地在网络上传输,得到节点的验证。

首先,将数据存储在这些区块中是非常昂贵的。在撰写本文时,直接在以太坊 L1 上存储 BAYC #3368 的整个图像数据可能要花费超过18,000美元。

图2:主网活跃项目,选择200年的存储时间,以符合 Arweave 对永久性的定义。来源:各网络官方文件,Arweave 存储计算器

其次,如果我们在这些区块中存储大量的任意数据,网络拥堵将愈发严重:如果用户需要在特定的时间向网络提交交易,他们将需要向验证者支付更多的 Gas 费以使他们的交易得到优先处理,进而增加了网络的使用成本。

因此,将 NFT 的底层元数据和图像数据以及 DApp 前端存储在链下是目前默认的做法。

中心化网络

如果在区块链上存储数据如此昂贵,为什么不直接在中心化网络上存储链下数据呢?

中心化网络容易受到审查,而且上面的数据是可更改的。它们要求用户信任存储服务商,来保证数据的安全。但事实上没有任何方式可以保证中心化网络的运营商能够不辜负用户对他们的信任:数据可能被故意或意外地删除,例如存储服务商的政策变化、硬件故障或被第三方攻击。

NFT

由于一些 NFT 项目的地板价超过10万美元,相当于其图片文件每 kb 的图像数据价值高达数万美元,一个简单的承诺并不足以保证这些贵重的数据在任何时候都可以使用。用户需要更安全的存储方式来确保 NFT 数据的永久性与不变性。

图3:基于撰文时最后一次交易的 CryptoPunk 地板价;CryptoPunk 图像大小基于 CryptoPunks V2 链上字节串的字节长度。截至2022年5月10日的数据。来源:OpenSea,链上数据,IPFS metadata

NFT 本身实际上并不包含任何图像数据,而是包含一个指向元数据和图像数据的指针,这些数据被储存在链下。这些数据与 NFT 同样需要被保护,因为如果这些数据消失了,NFT 将变成空的容器。

图4:区块链、区块、NFT 和链外数据的简化图示

可能有人会说,NFT 的价值主要不是由它们所指的元数据和图像数据驱动的,而是由围绕其收藏品建立生态系统的社区驱动的。好吧这可能并没说错,但如果没有基础数据,NFT 就什么也不是,社区也就无法形成。

除了个人资料照片和艺术收藏品之外,NFT 还可以代表现实世界资产的所有权,如房地产或金融工具。这样的数据拥有现实世界的价值,考虑到它所代表内容的重要性,支撑 NFT 的每一字节数据应该与链上 NFT 一样有价值。

DApp

如果 NFT 是区块链上的商品,那么 DApp 就可以被认为是区块链上的服务商。DApp 是由存在于链下的前端用户界面,与存在于区块链网络上并与区块链互动的智能合约组合成的。有的 DApp 也包含一个简单的后台,将某些计算转移到链下,以减少所需的 gas 费用,从而减少终端用户在执行某些交易时成本。

图5:DApp 与区块链网络交互的简化图示

虽然 DApp 的价值应该由其使用价值决定(如 DeFi、GameFi、社交、元宇宙、域名服务等),但 DApps 带来的交易数额是惊人的。在撰写本文时,根据 DappRadar 的数据,在交易量前10名的 DApp 上,过去30天内总共进行了高达1,500亿美元的交易。

图6:交易量前10名的 DApp。来源:DappRadar,2022年5月11日

虽然 DApp 的核心机制是通过智能合约执行的,但终端用户访问 DApp 还是需要通过其前端。因此,从某种意义上说,保证 DApp 前端的可用性就是保证底层服务的可用性。

图7:Aave 创始人 Stani Kulechov 在 Twitter 上说,Aave DApp 前端在2022年1月20日就下线了,但仍可通过 IPFS 访问其托管的网站副本。来源: [email protected]

去中心化的存储减少了出现服务器故障、DNS 黑客攻击或中心化平台封禁 dApp 前端的可能性。即使 dApp 停止开发,用户也可以继续访问前端,并通过前端使用其智能合约。

去中心化存储方案概览

比特币和以太坊等区块链致力于促进价值转移。一些去中心化存储网络也采用了这种方法:他们使用原生区块链来记录和跟踪存储订单,这代表了一种价值转移,以换取存储服务。然而,这只是许多潜在的方法之一,存储领域非常广阔,多年来出现了各种各样的解决方案,不同方案在不同方向进行权衡以适配不同的应用场景。

图8:部分去中心化存储协议概述

尽管有许多不同之处,但上述项目都有一个共同点:这些网络都没有像比特币和以太坊区块链那样将所有数据复制到所有节点上。在去中心化存储网络中,存储数据的不可更改性和可用性并不是通过网络中的大多数人存储所有数据和验证连续数据来实现的。如前所述,许多网络只选择使用区块链来跟踪订单。

让去中心化存储网络上的所有节点存储所有数据是不可持续的,因为运行网络的开销成本会迅速提高用户的存储成本,并最终促使存储网络向少数能够负担其硬件成本的节点运营商集中。

因此,去中心化存储网络有许多与区块链截然不同的挑战需要克服。

数据去中心化的挑战

回顾之前提到的关于链上数据存储的限制,显然,去中心化存储网络必须在不影响网络价值转移机制的基础上存储数据,同时确保数据的永久性、不变性和可访问性。从本质上讲,去中心化的存储网络必须能够存储数据、检索数据和维护数据,同时确保网络中的所有参与者都能因其所做的存储和检索工作而得到激励,同时也要坚持系统的去中心化性质。

这些挑战可以归纳为以下问题:

  • 数据存储格式:存储完整的文件还是文件片段?
  • 数据的复制存储:在多少个节点上存储数据(完整文件或片段)?
  • 存储文件检索:网络如何知道从哪里检索文件?
  • 存储数据的证明:节点是否存储了被要求存储的数据?
  • 随着时间推移,数据的可用性:随着时间的推移,数据是否仍然被存储?
  • 存储服务价格发现:存储成本是如何确定的?
  • 长期的数据冗余:如果节点离开网络,网络如何确保数据仍然可用?
  • 数据传输激励:网络带宽是有成本的,如何确保节点在被请求时及时检索到数据?
  • 通证经济:除了确保网络上的数据可用之外,如何确保网络本身长期存在?

如今,我们可以看到各种存储方案采用了广泛的机制,并进行了一定的权衡,以实现去中心化。

图9:部分存储网络的技术构架摘要

关于上述网络的详细情况及在每项挑战上的深入对比,请参考完整的研究报告,可以在 Arweave 或者 Crust 找到。

数据存储格式

图10:数据完整复制以及纠删码


在这些网络中,有两种主要的方法被用来在网络上存储数据:存储完整的文件和使用纠删码。Arweave 和 Crust Network 存储完整文件,而 Filecoin、Sia、Storj 和 Swarm 都使用纠删码。使用纠删码时,数据被分解成恒定大小的片段,每个片段都被扩展,并用冗余数据进行编码。保存在每个片段中的冗余数据使得重构原始文件无需调动全部片段,只需要部分不重叠片段便可以完成重构。

数据的复制存储

Filecoin、Sia、Storj 和 Swarm 网络对纠删码片段的数量和每个片段中存储的冗余数据百分比设置各有不同。Filecoin 允许用户在存储文件时自定义纠删码片段应该被复制在多少个独立的物理设备上,如果用户想在不同的存储矿工处存储文件,那么用户必须进行单独的存储交易。Crust 网络上的复制变量由网络运行状态决定。而 Arweave 的存储证明机制激励节点尽可能多地存储数据,因此,Arweave 的复制上限是网络上存储节点的总数。

图11:数据存储格式将影响检索和重构

存储文件检索

在数据以各种形式分布在各个节点后,为了保证用户可以随时获得被存储的数据,去中心化存储网络还需要能够定位存储数据的位置。Filecoin、Crust 和 Sia 都使用了能够跟踪存储订单的原生区块链,而存储节点也需要维护存储文件的本地列表。Arweave 使用一个类似区块链的结构。与比特币和以太坊等区块链不同,在 Arweave 上,一个节点可以自行决定是否存储某个区块的数据。因此,如果比较 Arweave 上多个节点,它们不会完全相同。相反,某些节点会缺失一些区块,这些区块可以在其他节点上找到。

图12:Blockweave 中3个节点图示

Storj 和 Swarm 使用两种截然不同的检索方式。在 Storj 中包含两类节点,除了存储节点外另有一类卫星节点,他们作为一组存储节点的协调者,管理和跟踪数据的存储位置。在 Swarm 中,数据的存储地址被直接嵌入到数据块中。当数据被检索时,网络可以根据数据块获得原始数据的存储位置。

存储数据的证明

对于存储数据的证明,每个去中心化存储网络都采用了各自独特的方案。Filecoin 使用复制证明(Proof of Replication),一种专有的存储证明机制。首先将数据存储在存储节点上,然后将数据封存在一个扇区中。封存过程使得同一数据的两个复制件可以被证明是彼此唯一的,从而确保网络上存储了正确数量的复制件。

Crust 将一块数据分解成许多小块,这些小块被散列到 Merkle 树中。通过比较存储在物理存储设备上的单个数据片断的散列结果与预期的 Merkle 树散列结果,Crust 可以验证文件是否被正确存储。这与 Sia 的方法类似,不同的是,Crust 在每个节点上存储整个文件,而 Sia 则存储擦除编码的片段。Crust 可以将整个文件存储在一个节点上并保证隐私,通过使用节点的可信执行环境(Trusted Execution Environment),这是一个封装的硬件组件,即使是硬件所有者也无法访问。Crust 将这种存储证明算法称为“有意义的工作量证明”(Meaningful Proof of Work),而“有意义”代指,只有在对存储数据进行更改时才会计算新的哈希值,从而减少无意义的计算。Crust 和 Sia 都将 Merkle 树根哈希值存储在区块链上,将区块链作为验证数据完整性的来源

Storj 通过数据审计检查数据是否被正确存储。数据审计类似于 Crust 和 Sia 使用 Merkle 树来验证数据的方式。在 Storj 上,一旦有足够的节点返回他们的审计结果,存储网络就可以根据多数人的反应来确定哪些节点是有问题的,而不是与区块链的真实来源进行比较。Storj 的这种机制是专门设计的,因为开发者认为通过区块链减少存储网络层面内的协调,可以在速度(不需要等待共识)和带宽使用(不需要整个网络定期与区块链通信)方面带来性能改进。

Arweave 使用加密的工作量证明(Proof of Work)来确定文件是否已经被存储。这个机制中,在一个节点能够开始开采下一区块前,需要证明上一个区块和网络区块历史中的另一个随机区块是可访问的。因为在 Arweave 中,上传的数据直接存储在区块中,对前一个区块的顺利访问证明了存储服务商确实正确地保存了文件。

最后,Swarm 也使用了 Merkle 树,不同的是,Swarm 中的 Merkle 树不是用来确定文件位置的,而是直接将数据块存储在 Merkle 树中。在 Swarm 上存储数据时,Merkle 树的根哈希值,就是存储数据的地址,也是文件被正确分块和存储的证明

随着时间推移,数据的可用性

对于在一定时间内确定数据的可用性,不同存储网络同样使用独特的方案。Filecoin 为了减少网络带宽,存储矿工被要求在数据要被存储的时间段内连续运行复制证明(Proof of Replication)算法,每个时间段产生的哈希值证明存储空间在特定时间段内完好地存储着数据。

Crust、Sia 和 Storj 定期运行其对随机数据片段的验证,并将结果反馈给其协调终端,Crust 和 Sia 的区块链,Storj 的卫星节点。Arweave 通过它的访问证明机制确保数据的持续可用性,该机制要求矿工不仅要证明他们可以访问最后一个区块,还要证明可以访问随机的历史区块。Arweave 通过向可以访问特定历史区块的矿工提供更高出块概率,激励存储矿工存储更早或更稀有的区块。Swarm 每隔一段时间就会进行抽奖,奖励那些长期存储不太受欢迎数据的节点。

Filecoin、Sia 和 Crust 要求节点存入一定的抵押品以成为存储节点,而 Swarm 只要求长期存节点存入抵押品。Storj 不需要矿工预付抵押品,而是从矿工那里扣留一些存储收入。最后,所有存储网络都会定期向节点支付与其可证明存储数据相应的收入。

存储服务价格发现

为了确定存储服务的价格,Filecoin 和 Sia 使用存储服务市场,存储服务商设定他们的要价,存储用户设定他们愿意支付的价格,以及其他一些设置。然后,存储服务市场将用户与满足其要求的存储供应商联系起来。Storj 采用了类似的方法,其中最大的区别是 Storj 没有与存储网络全部节点连接的服务市场,而是每个卫星节点负责维护连接一批存储节点。

Crust、Arweave 和 Swarm 都让协议决定了存储的价格。Crust 和 Swarm 允许根据用户的文件存储要求进行某些设置,在 Arweave 上,文件总是被永久存储。

长期的数据冗余

随着时间的推移,一些节点会退出这些公共网络,当节点退出时,它们存储的数据也会一同消失。因此,存储网络必须在系统中保持一定的冗余度。Sia 和 Storj 通过收集碎片的子集,重构原本数据,然后对文件进行重编码以重新创建缺失的碎片来解决上述问题。在 Sia 中,用户必须定期登录 Sia 客户端以获得补充文件碎片,因为只有客户端能够区分数据碎片所属的原本数据和用户。在 Storj 上,卫星节点承担了始终在线并定期运行数据审计以补充数据碎片的责任。

Arweave 的访问证明算法确保数据总是定期被复制,而在 Swarm 上,数据被复制到彼此相近的节点上。在 Filecoin 上,如果数据随着时间的推移而消失,并且剩余的文件片段低于某个阈值,那么存储订单就会被重新引入存储市场,允许另一个存储矿工承接该存储订单。Crust 的补充数据机制目前还在开发中。

数据传输激励

在数据被安全地存储后,有时用户会需要检索数据。由于带宽是有成本的,所以存储节点必须被激励在请求时提供数据。Crust 和 Swarm 使用债务和信用机制,每个节点跟踪他们与其他节点互动的入站和出站流量的情况。如果一个节点只接受入站流量,而不接受出站流量,那么它在未来的通信中就会被取消优先权,这会影响它接受新存储订单的能力。Crust 使用 IFPS 的 Bitswap 机制,而 Swarm 使用一个名为 SWAP 的专有协议。Swarm 的 SWAP 协议,用户可以在存储时为数据购买额外的长期存储附加金,附加金代表了用户在 Swarm 中坚持长期使用的价值。用户检索数据时,节点会优先为用户检索附带长期存储金的数据,并从存储金中提取一些作为服务费,直到附加金耗尽。

图13:Swarm Accounting Protocol(SWAP)。来源:Swarm 白皮书

这也是 Arweave 确保数据在被请求时传输的方式,在 Arweave 中,这种机制被称为 Wildfire,节点会优先考虑排名较好的用户,并相应地合理安排带宽使用。在 Filecoin、Storj 和 Sia 上,用户会直接为带宽付费,从而激励节点在收到请求时及时交付数据。

通证经济

通证经济的设计确保了网络的稳定性,也确保了网络将长期存在,因为数据只有在存储网络中才会被永久保存。在下面的表格中,我们简要总结了不同网络的通证经济设计,以及各自设计中蕴含的通货膨胀和通货紧缩的压力。

关于每个项目的通证经济的详细介绍,可以在 Arweave 或者 Crust 查看全文。

图14:去中心化存储网络的通证经济设计

哪个存储网络最好?

要想明确某一网络客观上比另一个好是几乎不可能的,在设计去中心化的存储网络时,有各种各样的因素需要被权衡。虽然 Arweave 对于数据的永久存储很好,但 Arweave 不一定适合将 Web2 的行业参与者转移到 Web3,因为并非所有的数据都需要永久化。当然也有数据子行业确实需要永久存储,比如 NFT 和 DApp。归根结底,这些设计是基于网络目标应用场景而决定的。

下面部分是各种存储网络的总结性简介,我们在一组定义的参考标准上对它们进行了相互比较。所用的参考标准反映了这些网络的比较维度,值得注意的是,克服去中心化存储挑战的方法在许多情况下并没有更好或更差,只是反映了设计决策。

  • 存储参数的灵活性:用户对文件存储参数的可控程度
  • 存储存储持久性:在未经干预的情况下文件在多大程度上可以通过网络实现理论上的存储持久性
  • 冗余持久性:通过补充或修复维持数据冗余的能力
  • 数据传输激励:确保节点及时传输数据的能力
  • 存储跟踪的普遍性:节点之间就数据的存储位置达成共识的程度
  • 存储数据的可访问性:确保存储过程中的单一行为者不能取消对网络上文件的访问的能力

分数越高,说明上述某一项的能力越强。

Filecoin

Filecoin 的通证经济支持增加网络的总存储空间,这有助于以不可更改的方式存储大量的数据。此外,他们的存储算法更适合那些不太可能随时间变化的数据(冷存储)。

图15:Filecoin 的总结性介绍

Crust

Crust 的通证经济确保了其高速检索的超冗余架构,这使得它更适用于高流量的 DApp,及需要快速检索的流行 NFT 数据。

Crust 在存储的持久性方面得分较低,因为缺乏冗余持久性,它提供永久存储的能力受到严重影响。尽管如此,用户仍然可以通过手动设置一个极高的复制系数来实现永久性。

图16:Crust 的总结性介绍

Sia

Sia 更关注用户隐私。之所以需要用户手动重构数据,是因为节点并不知道他们存储的是什么数据片段,以及这些片段属于哪个原始数据。只有数据所有者可以从网络中的碎片中重构原始数据。

图17:Sia 的总结性介绍

Arweave

相比之下,Arweave 更关注持久性。这也反映在他们的底层设计中,这使得存储成本更高,但也使 Arweave 成为 NFT 数据存储的一个极具吸引力的选择。

图18:Arweave 的总结性介绍

Storj

Storj 的商业模式似乎在很大程度上影响了他们的计费和支付方式,亚马逊网络服务用户更熟悉按月计费。通过去除基于区块链的系统中经常出现的复杂的支付和激励系统,Storj Labs 牺牲了一些去中心化,但大大降低了他们的关键目标群体,亚马逊用户的准入门槛。

图19:Storj 的总结性介绍

Swarm

Swarm 的粘合曲线模型确保存储更多数据时保持相对较低的存储成本水平,而且它的设计与以太坊高度相似,使其成为存储基于以太坊的 DApp 数据服务商的有力竞争者。

图20:Swarm 的总结性介绍

对于去中心化存储面临的各种挑战,并没有单一的最佳方案。根据不同网络试图解决的问题和应用场景,在网络设计的技术和象征性方面有必要做出权衡。

图21:去中心化存储网络的应用场景摘要,开发者试图的问题和具体的目标应用场景将决定各种设计决策。

下一个领域

回到 Web3 的基础设施支柱(共识、存储、计算),我们看到去中心化的存储空间有不少参与者,他们已经在市场上为自己的应用场景提出定位。这其中并不排除新的网络出现,在我们优化现有的解决方案或占据新的应用场景市场的同时,也提出了一个问题:下一步应该怎么走?

答案是:计算。实现真正去中心化的互联网的下一个前沿是去中心化的计算。目前,只有少数解决方案为市场带来了无需信任、去中心化的计算解决方案,可以为复杂的 DApp 提供动力,这些解决方案能够以远低于区块链上执行智能合约的成本进行更复杂的计算。

在撰写本文时,Internet computer(ICP)以及 Holochain(HOLO)是在去中心化计算市场中占据有利位置的解决方案。尽管如此,去中心化计算的市场空间还没有变得像共识和存储空间那样拥挤。因此,强大的竞争对手迟早会进入市场,并对自己进行相应的定位。Stratos(STOS)就是这样一个竞争者。Stratos 通过其去中心化的数据网状结构技术提供了一个独特的网络设计。

我们认为去中心化计算,包括 Stratos 网络的网络设计,未来值得研究。

写在最后

感谢你阅读这篇关于去中心化存储的研究文章。如果你喜欢这些旨在揭开我们共享的 Web3 未来基础设施的研究,请在 Twitter 上关注 @FundamentalLabs

我是否错过了任何好的网络、概念或其他有价值的信息?请在 Twitter 上联系我 @0xPhillan,让我们共同加深这项研究。

完整研究文章,可在 ArweaveCrust 中下载阅读。

Web3

存储

基础设施

0xPhillan

Fundamental Labs 高级研究经理

相关币种