Metafund

Posted on Jun 23, 2022Read on Mirror.xyz

Web3 的支柱:纵览去中心化存储生态图景

Filecoin、Arweave、Storj、Crust Network、Sia 和 Swarm,谁是最佳的去中心化存储方案?

撰文:0xPhillan、Fundamental labs

翻译:Tia,ForesightNews

 

如果我们想在去中心化互联网更进一步,最终将需要这三大支柱:共识、存储以及计算。如果人类成功将这三个领域去中心化,我们将踏向互联网的下一征程: Web3。

图 1:每个 Web3 支柱的项目示例

存储,作为第二大支柱,正迅速成熟,各种存储解决方案已经应用到使用场景中。本文,将进一步探讨去中心化存储这一支柱。

此篇文章是完整篇幅的一个总结,完整篇幅可从去中心化存储 ArweaveCrust Network 下载。

 

去中心化存储的需求

 

区块链的视角

从区块链的视角来看,我们需要去中心化存储是因为区块链的设计就不是用来存储大体量数据的。获得区块共识的机制依赖被放置于在区块中(收集交易)的数据(交易),这些数据会迅速分享至网络供节点验证。

首先,在区块中存储数据非常昂贵。在撰文时,在 layer1 上存储一个完整的 BAYC #3368 需要花费超过 18000 美元。

图 2:具有活跃主网的项目。选择 200 年的存储期限来符合 Arweave 对永久性的定义。来源:网络文档、Arweave 存储计算器

其次,如果我们想要在这些区块中存储大量套利数据,网络拥堵将会变得严重,这会在使用网络时引起 gas 战从而导致价格上涨。这就是区块的隐含时间价值的后果,如果用户需要在某一特定时间向网络提交交易,他们会需要付额外的 gas 费来使得他们的交易被优先处理。

因此,建议将 NFT 的元数据以及图像数据、dApp 的前端进行链下存储。

 

中心化网络的视角

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

中心化网络容易受到审查并且具有可变性。这要求用户信任数据提供方能维护数据的安全。谁都不能确保中心化网络的运营方真的不会辜负用户对他们的信任:数据可能会因为有意或出于意外被抹除。例如可能会遇到数据提供商改变政策、硬件故障或被第三方攻击。

 

NFTs

随着 NFT 藏品的地板价超过 10 万美元,一些 NFT 每 kb 图像数据价值更是高达 7 万,仅仅通过承诺不足以确保数据每时每刻的可获得性。还是需要有更强的保证来确保底层 NFT 数据的不变性和持久性。

图 3:基于上次销售的 Crypto Punk 底价(撰写本文时无底价); Crypto Punk 图像大小基于 Crypto Punks V2 链上字节字符串的字节长度。 数据截至 2022 年 5 月 10 日。来源:OpenSea、链上数据、IPFS 元数据

NFT 并没有包含任何图像数据,相反,它们有一个指向链下存储元数据和图像数据的指针。但需要保护的正是这些元数据和图像数据,如果这些数据消失,NFT 就只是一个空荡荡的容器。

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

可以说,NFT 的价值并不主要由它们所指的元数据和图像数据驱动,而是由藏品社区推动,这些社区会围绕藏品创建相关活动。 虽然这么做可能是正确的,但如果没有基础数据,NFT 就无意义,无意义的社区是没有办法形成的。

除了头像图片和艺术收藏品,NFT 还可以代表现实世界资产的所有权,例如房地产或金融工具。 此类数据是有外在的现实世界价值的,由于是通过 NFT 代表其价值,因此保存 NFT 每一个字节数据的价值可不会低于链上 NFT 的价值。

 

dApps

如果 NFT 是存在于区块链上的商品,那么 dApp 可以被认为是存在于区块链上并促进与区块链交互的服务。 dApp 是存在于链下的前端用户界面和存在于网络上并与区块链交互的智能合约的组合。 有时它们还有一个简单的后端,可以将某些计算转移到链下以减少所需的 gas,从而减少最终用户对某些交易产生的成本。

图 5:dApp 与区块链交互的简化图示

尽管 dApp 的价值应当根据 dApp 的背景来考虑(如,DeFi,GameFi,社交,元宇宙,名称服务等),dApps 带来的价值是惊人的。在撰文时的过去 30 天内,DappRadar 上排名前 10 位的 dApp 共同促成了超过 1500 亿美元的转账。

图 6:截至 2022 年 5 月 11 日,DappRadar 报告的按美元数量计算的最受欢迎的 dApp

尽管 dApp 的核心机制由智能合约执行,终端用户可通过前端确保用户可访问性。因此,在某种意义上,确保 dApp 前端的可访问性在于确保底层服务的可用性。

图 7:Aave 创始人 Stani Kulechov 在推特上表示,Aave dApp 前端于 2022 年 1 月 20 日下线,但仍可通过 IPFS 托管的网站副本访问

去中心化存储减少了服务器故障、DNS 黑客、以及中心化实体删除对 dApp 前端的访问。即使停止 dApp 的开发,也可以通过前端继续访问智能合约。

 

去中心化存储图景

如比特币以太坊这样的区块链的存在主要是为了促进价值转移。当涉及到去中心化存储网络时,一些网络也采用了这种方法:它们使用原生区块链来记录和跟踪存储订单,这代表了价值转移以换取存储服务。然而,这只是众多潜在方法中的一种 —— 存储领域广阔,多年来出现了具有不同权衡和用例的不同解决方案。

图 8:一些任意选择的去中心化存储协议概述(非详尽)

尽管存在许多差异,但上述所有项目都有一个共同点:这些网络都没有在所有节点上复制所有数据,比特币和以太坊区块链就是这种情况。 在去中心化存储网络中,存储数据的不变性和可用性不是借由大多数网络存储并验证相继链接的数据实现的,比特币和以太坊就是这种情况。 尽管如前所述,许多网络选择使用区块链来跟踪存储订单。

去中心化存储网络上的所有节点都存储所有数据是不可持续的,因为运行网络的间接成本会使用户的存储成本迅速提高,并最终推动网络的中心化,转向少数能够负担得起硬件费用的节点运营商。

因此,去中心化存储网络需要克服非同寻常的挑战。

 

去中心化存储的挑战

回顾前面提到的关于链上数据存储的限制,很明显去中心化存储网络必须以不影响网络价值转移机制的方式存储数据,同时确保数据保持持久性、不可变性和可访问性。 从本质上讲,去中心化存储网络必须能够存储数据、检索数据和维护数据,同时确保网络中的所有参与者都受到他们所做的存储和检索工作的激励,同时还要维护去中心化系统的去信任性。

这些挑战可被总结为如下问题:

  • 数据存储格式:存储完整文件还是文件碎片?
  • 数据复制:跨多少个节点存储数据(完整文件或片段)?
  • 存储跟踪:网络如何知道从哪里检索文件?
  • 存储数据的证明:节点是否存储了他们被要求存储的数据?
  • 随时间推移的数据可用性:数据是否仍随时间推移而存储?
  • 存储价格发现:存储成本如何确定?
  • 持久数据冗余:如果节点离开网络,网络如何确保数据仍然可用?
  • 数据传输:网络带宽是有代价的 —— 如何确保节点在被询问时检索数据?
  • 网络代币经济学:除了确保数据在网络上可用之外,网络如何确保网络长期存在?

本研究的一部分探索了各网络的广泛机制,以及这些机制实现去中心化的某些权衡。

图 9:审计的存储网络的技术设计决策摘要

有关上述网络对于每个挑战的深入比较,以及每个网络的详细配置文件,可于 ArweaveCrust Network 阅读完整研究文章。

图 10:数据复制和擦除编码

在这些网络中,有两种主要的方法可用于在网络上进行存储数据:存储完整文件和使用纠删码:Arweave 和 Crust Network 存储完整文件,而 Filecoin、Sia、Storj 和 Swarm 都使用纠删码。 在擦除编码中,数据被分解成固定大小的片段,每个片段都被扩展并用冗余数据编码。 保存到每个片段中的冗余数据使得只需要片段的一个子集来重建原始文件。

 

数据复制

在 Filecoin、Sia、Storj 和 Swarm 中,网络确定擦除编码片段的数量以及要存储在每个片段中的冗余数据的范围。 然而,Filecoin 还允许用户确定复制因子,该因子决定了作为与单个存储矿工的存储交易的一部分,应该在多少个单独的物理设备上复制擦除编码片段。 如果用户想用不同的存储矿工存储文件,那么用户必须进行单独的存储交易。 Crust 和 Arweave 让网络决定复制,而在 Crust 上手动设置复制因子是可能的。 在 Arweave 上,存储证明机制激励节点存储尽可能多的数据。 因此,Arweave 的复制上限是网络上存储节点的总数。

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

用于存储和复制数据的方法将影响网络检索数据的方式。

 

存储跟踪

在数据以网络存储它的任何形式分布在网络中的节点之后,网络需要能够跟踪存储的数据。 Filecoin、Crust 和 Sia 都使用本地区块链来跟踪存储订单,而存储节点还维护本地网络位置列表。 Arweave 使用类似区块链的结构。 与比特币和以太坊等区块链不同,在 Arweave 上,节点可以自行决定是否存储来自区块的数据。 因此,如果比较 Arweave 上多个节点的链,它们将不完全相同 —— 相反,某些节点上的某些块会丢失,而在其他节点上可以找到。

图 12:blockweave 中三个节点的图示

最后,Storj 和 Swarm 使用了两种完全不同的方法。 在 Storj 中,称为卫星节点的第二种节点类型充当一组存储节点的协调器,用于管理和跟踪数据的存储位置。 在 Swarm 中,数据的地址直接嵌入到数据块中。 检索数据时,网络基于数据本身知道在哪里查找。

 

存储数据证明

在证明数据的存储方式时,每个网络都采用自己独特的方法。 Filecoin 使用复制证明 —— 一种专有的存储证明机制,它首先将数据存储在存储节点上,然后将数据密封在一个扇区中。密封过程使得相同数据的两个复制片段可以证明彼此是唯一的,从而确保正确数量的副本存储在网络上(所以为「复制证明」)。

Crust 将一段数据分解成许多小块,这些小块被散列到 Merkle 树中。通过将存储在物理存储设备上的单个数据的散列结果与预期的 Merkle 树散列值进行比较,Crust 可以验证文件是否已正确存储。这类似于 Sia 的方法,不同之处在于 Crust 将整个文件存储在每个节点上,而 Sia 存储擦除编码的片段。 Crust 可以将整个文件存储在单个节点上,并且仍然可以通过使用节点可信执行环境 (TEE) 来实现隐私,这是一个即使硬件所有者也无法访问的密封硬件组件。

Crust 将这种存储证明算法称为「有意义的工作证明」,而有意义表示仅在对存储的数据进行更改时才计算新的哈希值,从而减少了无意义的操作。 Crust 和 Sia 都将 Merkle 树根哈希存储在区块链上,作为验证数据完整性的真实来源。

Storj 通过数据审计检查数据是否已正确存储。数据审计类似于 Crust 和 Sia 如何使用 Merkle 树来验证数据片段。在 Storj 上,一旦有足够节点返回他们的审计结果,网络就可以根据多数响应确定哪些节点有故障,而不是与区块链的事实来源进行比较。 Storj 中的这种机制很有意,因为开发人员认为,通过区块链减少网络范围内的协调可以在速度(无需等待共识)和带宽使用(无需整个网络定期与区块链)方面提升性能。

Arweave 使用加密工作证明难题来确定文件是否已存储。在这种机制中,为了让节点能够挖掘下一个区块,他们需要证明他们可以访问前一个区块和网络区块历史中的另一个随机区块。因为在 Arweave 中上传的数据直接存储在块中,通过证明对前一个块的访问证明存储提供者确实正确保存了文件。

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

 

随时间推移的数据可用性

同样,在确定数据存储在特定时间段内时,每个网络都有独特的方法。在 Filecoin 中,为了减少网络带宽,存储矿工需要在要存储数据的时间段内连续运行复制证明算法。每个时间段的结果哈希证明在特定时间段内存储空间已被正确的数据占用,因此是「时空证明」。

Crust、Sia 和 Storj 定期对随机数据片段进行验证,并将结果报告给他们的协调机制——Crust 和 Sia 的区块链,以及 Storj 的卫星节点。 Arweave 通过其访问证明机制确保数据的一致可用性,这要求矿工不仅要证明他们可以访问最后一个块,还要证明他们可以访问一个随机的历史块。存储较旧和稀有的区块会被激励,因为这增加了矿工赢得工作量证明难题的可能性,该难题是访问特定区块的先决条件。

另一方面,Swarm 定期运行抽奖活动,奖励那些持有不那么受欢迎数据的节点,同时还为承诺要在更长时间内存储的数据的节点运行所有权证明算法。

Filecoin、Sia 和 Crust 需要节点存入抵押品才能成为存储节点,而 Swarm 只需要它用于长期存储请求。 Storj 不需要前期抵押品,但 Storj 将代扣矿工的部分存储收入。最后,所有网络在节点可证明存储数据的时间段内定期向节点付款。

 

存储价格发现

为了确定存储价格,Filecoin 和 Sia 使用存储市场,存储供应商设置他们的要价,存储用户设置他们愿意支付的价格,以及其他一些设置。 然后,存储市场将用户与满足其要求的存储提供商联系起来。 Storj 采用了类似的方法,主要区别在于没有一个单一的网络范围的市场可以连接网络上的所有节点。 相反,每颗卫星都有自己的一组与之交互的存储节点。

最后,Crust、Arweave 和 Swarm 都让协议来决定存储价格。 Crust 和 Swarm 可以根据用户的文件存储要求进行某些设置,而 Arweave 上的文件则是永久存储。

 

持久数据冗余

随着时间的推移,节点将离开这些开放的公共网络,当节点消失时,它们存储的数据也会消失。因此,网络必须积极地在系统中保持一定程度的冗余。 Sia 和 Storj 通过收集片段子集、重建基础数据然后重新编码文件来重新创建丢失的片段,通过补充丢失的擦除编码片段来实现冗余。在 Sia 中,用户必须定期登录 Sia 客户端才能补充碎片,因为只有客户端才能区分哪些数据碎片属于哪条数据和用户。而在 Storj 上,Satellite 会始终在线并定期运行数据审计以补充数据片段。

Arweave 的访问证明算法确保数据始终在整个网络中定期复制,而在 Swarm 上,数据被复制到彼此靠近的节点。在 Filecoin 上,如果数据随着时间的推移而消失并且剩余的文件碎片低于某个阈值,则存储订单将被重新引入存储市场,允许另一个存储矿工接管该存储订单。Crust 的补货机制(replenishment mechanism)目前正在开发中。

 

激励数据传输

随着时间的推移,数据被安全存储后,用户会想要检索数据。由于带宽是有成本的,因此必须在需要时提供数据对存储节点进行激励。 Crust 和 Swarm 使用债务和信用机制,其中每个节点会跟踪入站和出站流量与他们交互的节点是如何流动的。如果一个节点只接受入站流量,但不接受出站流量,则它会被取消优先级以供将来通信,这可能会影响其接受新存储订单的能力。 Crust 使用 IFPS Bitswap 机制,而 Swarm 使用名为 SWAP 的专有协议。在 Swarm 的 SWAP 协议上,网络允许节点用邮票来偿还他们的债务(只接受没有足够出站流量的入站流量),这可以用来兑换他们的实用代币。

图 13:群记帐协议 (SWAP),资料来源:Swarm 白皮书

这种对节点慷慨性的跟踪也是 Arweave 确保数据在请求时传输的方式。 在 Arweave 中,这种机制称为野火,节点将优先考虑排名更好的对等节点,并相应地合理化带宽使用。 最后,在 Filecoin、Storj 和 Sia 上,用户最终会为带宽付费,从而激励节点在请求时交付数据。

 

代币经济

代币经济设计确保了网络的稳定性,也确保了网络将长期存在,因为最终数据会与网络一样永久。 在下表中,我们可以找到代币经济学设计决策的简要总结,以及嵌入在相应设计中的通货膨胀和通货紧缩机制。

图 14:已审计的存储网络的代币经济设计决策。 

哪一个是最佳网络?

并不会有一个网络在客观上比另一个网络更好。在设计去中心化存储网络时,存在无数的权衡。虽然 Arweave 非常适合永久存储数据,但 Arweave 不一定适合将 Web2.0 行业参与者迁移到 Web3.0 - 并非所有数据都需要永久保存。但是,一个强大的数据子领域的确需要永久性:NFT 和 dApp。

最终,设计决策会基于该网络的目的。

以下是各种存储网络的总结概况,它们在下面定义的一组尺度上相互比较。使用的尺度反映了这些网络的比较维度,但是应该注意的是,克服去中心化存储挑战的方法在许多情况下并没有好坏之分,这只是设计决策的反映。

  • 存储参数灵活性:用户控制文件存储参数的程度
  • 存储持久性:文件存储在多大程度上可以通过网络实现理论上的持久性(即无需干预)
  • 冗余持久性:网络通过补充或修复来保持数据冗余的能力
  • 数据传输激励:网络确保节点慷慨传输数据的程度
  • 存储跟踪的普遍性:节点之间对数据存储位置的共识程度
  • 有保证的数据可访问性:网络确保存储过程中的单个参与者无法删除对网络上文件的访问的能力

分数越高表明上述各项的能力越强。

Filecoin 的代币经济学支持增加整个网络的存储空间,用于以不可变的方式存储大量数据。 此外,他们的存储算法更适用于不太可能随时间发生很大变化的数据(冷存储)。

图 15:Filecoin 总结概况

Crust 的代币经济学确保超冗余和快速检索,使其适用于高流量 dApp 并适用于快速检索流行 NFT 的数据。

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

图 16:Crust 总结概况

Sia 是关于隐私的。 之所以需要用户手动恢复健康,是因为节点不知道自己存储了哪些数据片段,以及这些片段属于哪些数据。 只有数据所有者才能从网络中的分片中重建原始数据。

图 17:Sia 总结概况

相比之下,Arweave 是关于持久性的。 这反映在了它们的设计中,使得存储成本更高,但也使它们成为存储 NFT 极具吸引力的选择。

图 18:Arweave 的总结概况

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

图 19:Storj 总结概况

Swarm 的联合曲线模型确保随着更多数据存储在网络上,存储成本保持相对较低,并且它与以太坊区块链的接近使其成为更复杂的基于以太坊的 dApp 的主要存储的有力竞争者。

图 20:Swarm 总结概况

对于去中心化存储网络面临的各种挑战,没有单一的最佳方法。 根据网络的目的和它试图解决的问题,它必须在网络设计的技术和代币经济学方面进行权衡。

图 21:已审查存储网络的强大用例总结

最后,网络的目的和它试图优化的特定用例将决定各种设计决策。

 

下一个篇章

回到 Web3 基础设施支柱(共识、存储、计算),我们看到去中心化存储空间拥有一小部分强大的参与者,并且他们已针对特定用例将自己定位在市场中。这并不意味着将优化现有解决方案或开辟新市场的新兴网络排除在外,但这确实提出了一个问题:接下来是什么呢?

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

互联网计算机(ICP)和 Holochain(HOLO)是在撰写本文时在去中心化计算市场中占据强势地位的网络。尽管如此,计算空间并不像共识和存储空间那样拥挤。因此,强大的竞争对手迟早会进入市场并相应地定位自己。 Stratos(STOS)就是这样的竞争对手之一。 Stratos 通过其分散式数据网格技术提供独特的网络设计。

我们将去中心化计算,尤其将 Stratos 网络的网络设计视为未来研究的领域。

Web3