当前位置: 首页 > article >正文

World Wide Walrus:下一代数据存储协议

要点总结

  • Sui通过一种名为存储基金的激励机制,实现了可持续的数据存储,但让所有Sui节点存储大量的大块数据(如媒体文件)并不高效。
  • Walrus是一个去中心化的存储协议,能够利用一种称为Red Stuff的纠删编码方法高效存储大块数据。Walrus利用Sui网络的激励系统和节点协调等功能。
  • Red Stuff使用二维编码技术,与完全复制或RS编码方法相比,数据恢复的成本更低。这在节点自由加入和离开的环境中,或节点集在每个纪元持续变化的情况下尤为有利。
  • Walrus的一个重要应用案例是Web3媒体公司Decrypt,它计划将内容上传到Walrus。此外,Walrus Sites允许通过Walrus和Sui构建去中心化的前端。
  • Sui在消费和基础设施层面继续创新,推出了zkLogin和Mysticeti等技术。Walrus也是其中一项创新,通过处理链下的大规模数据存储,扩展了Sui生态的应用范围,这是Sui自身难以独立管理的。

1. Sui存储基金

1.1 去中心化账本

什么是区块链?鉴于区块链是密码学、哲学、经济学和计算机科学等多学科交叉的产物,每个人对区块链的理解可能有所不同。在此背景下,尽管区块链在透明度、安全性和去中心化等方面相比现有系统具有诸多优势,但这些最终源于一个关键特征,即“分布式账本(distributed ledger)”。

简单来说,区块链是由多个服务器维护的分布式账本。这些服务器通过共识算法共享并管理相同的交易记录。正是因为每个人都持有相同的账本,区块链的各种优势才得以实现,使分布式账本成为区块链技术的核心。

然而,管理分布式账本比管理集中式服务器要困难得多。由于需要在全球范围内的节点之间达成共识,扩展性难以实现。此外,从硬件角度来看,将所有历史记录存储在每个节点上而不是单一服务器上是非常低效的。

例如,截至2024年10月,比特币区块链的总大小约为600GB,而以太坊的归档节点大小约为19.5TB,完整节点大小约为1100GB。如果优先去中心化而非扩展性的网络已达到如此规模,那么我们可以预见那些专注于扩展性的网络将增长得更快(例如,专注于速度的Sei Network已认识到存储问题并在优化其数据库模型)。

1.2 问题陈述

尽管分布式账本的规模可能迅速增加,但在网络的早期阶段,这并不构成重大问题。然而,如果这种情况持续下去,当分布式账本的大小在未来变得非常庞大时,加入网络的新节点的门槛将变得非常高,这可能会导致未来用户的交易费用增加。因此,大多数现有区块链的激励系统仅关注计算,而非存储。尽管有各种技术讨论(如EIP-4444、Verkle Trie等)旨在减少节点的存储负担,但从激励系统角度来解决存储问题的尝试较少。

1.3 Sui独特的链上数据存储

在这方面,Sui的处理非常有趣,因为它是一个自初始阶段便通过激励措施来解决存储问题的L1区块链。Sui旨在通过一名为“存储基金(Storage Fund)”的经济机制实现可持续的数据存储,其运作方式如下:用户提交给Sui验证节点的费用分为(1)与计算相关的gas费和(2)用于数据保留的存储费。Sui预先向用户收取永久数据存储的存储成本,并将其集中到存储基金中。只要数据保持链上存储,存储基金会持续将累积的金额重新分配给验证节点。此外,如果用户删除其数据,他们可以获得相应的存储成本返还。

Sui独特的链上数据存储系统产生了两个效果:

  • 由于用户可以在删除链上数据时获得存储成本返还,这可以通过经济激励鼓励减少分布式账本的容量。
  • 通过预先收取存储费用并将其作为未来验证节点的激励分配的独特激励结构,可以解决与存储相关的可持续性问题。

1.4 那么…大块数据(Blob)怎么办?

尽管Sui的存储基金是一个强大的工具,但它并不是所有数据类型的高效存储方法。因为链上数据包括用于状态计算的小容量必要数据(如交易数据)和包含媒体文件等大量大块数据。

区块链交易数据容量小,是计算分布式账本状态所必需的,因此网络中所有参与节点必须对其进行复制和存储。然而,对于图像、视频和音乐等大容量的支持性大块数据来说,让所有节点复制和存储它们是非常低效的。因此,为了处理此类数据,Mysten Labs正积极推出一项新的数据存储协议,名为Walrus。但在现有的众多去中心化存储协议(用于归档目的)中,是否真的需要多一个存储协议?Walrus究竟是什么?它与现有的存储协议有何不同?

2. Walrus:下一代数据存储协议

2.1 现有的去中心化存储协议

在深入探讨Walrus之前,让我们先来看看现有的存储协议。链上存储包括图像、视频和文档在内的大块数据在区块链行业至关重要。大块数据的典型示例包括原始NFT文件的链上存储、用于AI模型训练的数据集、dApp的去中心化前端托管,以及rollup交易数据的存储。正如这些例子所展示的,将数据存储在链上是一种强大的操作,可以证明数据的完整性。

由于这种重要性,许多协议在Walrus之前就尝试以去中心化的方式存储大规模数据,如大块数据。Filecoin、Arweave、Storj和Sia是一些典型例子。让我们来看看这些协议如何处理大块数据存储,以及Walrus与它们的不同之处。

以下示例中使用的缩写解释:

  • B:大块数据(blob)
  • W:数据上传者(blob writer)
  • R:数据读取者(blob reader)
  • F:拜占庭节点的数量
  • n:节点总数

2.1.1 完全复制:IPFS、Arweave

在分布式环境中存储大块数据最直观和简单的方法是由节点复制并存储上传者W上传的整个B。例如,如果你上传一个图像文件,节点并不会对图像文件进行分割,而是将图像文件按原样复制并存储。IPFS和Arweave是两个典型的例子。当然,这并不意味着参与IPFS和Arweave的存储节点会下载整个网络中存储的所有文件;相反,它们会以完整形式存储部分文件。

W将B及其相应的承诺(绑定承诺,例如哈希)传播给节点,并等待接收至少f+1个签名。(假设:n = 3f+1;至少需要f+1个签名以确保除了f个拜占庭节点之外,至少有一个诚实节点存储了B。)一旦收到f+1个签名,W可以生成可用性证书,确保任何人都可以完全访问该网络上的文件。

然而,完全复制存在许多缺点,主要是低效性:

  • 写入:当W将文件传播到节点以存储数据在网络上时,复杂度为O(nB)。
  • 读取:在异步环境中,读取数据的成本为O(nB),因为需要向f+1个节点发送请求。
  • 恢复:在异步环境中,要恢复数据,存储节点需要向f+1个其他节点发送请求,对于每个存储节点成本为O(nB)。应用于整个网络时,总成本为O(n² B)。请注意,这是最差的情况。

2.1.2 编码与分发:Storj、Sia

如上所述,完全复制这种方法简单、直观,且易于访问完整文件,但缺点是整个网络的存储成本较高。为了解决这个问题,使用Reed Solomon (RS)编码的去中心化存储网络应运而生,Storj和Sia就是典型代表。

RS编码是一种广泛使用的纠删码方法,在CD、DVD、二维码等方面应用广泛。纠删码将原始数据分为多个部分,并从这些部分生成额外的恢复数据。即使部分数据丢失,仍然可以通过恢复数据在一定程度上恢复原始数据。

让我们来看编码与分发方法的示例。W将B分为f+1个数据块,并额外编码2f个修复块。得益于RS编码的特性,只需f+1个块即可从总共3f+1个块中恢复原始B。此处,每个块的大小为O(B/n)。

W使用默克尔树等绑定承诺来承诺所有块,并向每个节点发送包含在默克尔树中的块及其包含证明。接收块的存储节点使用承诺验证其有效性,并向W发送签名。

当W从节点接收到至少2f+1个签名时,它生成一个可用性证书。编码与分发方法在数据写入和读取过程中比完全复制更高效,但在数据恢复方面仍然存在低效的缺点。

  • 写入:传播O(B/n)大小的块到网络,总成本为O(B)。
  • 读取:读取复杂度为O(B/n) * O(n) = O(B) ,因为需要向节点请求块并接收f+1个有效响应。
  • 恢复:在异步环境中,每个存储节点的恢复成本为O(B),因为它需要从2f+1个节点接收数据块。应用于整个网络时,总成本为O(nB),这仍然低效。

提高数据恢复过程的效率至关重要,因为作为去中心化协议,节点可以自由加入和离开网络。在每个时期节点集发生变化的情况下,新节点需要从之前的节点接收并恢复块。Walrus采用了一种新编码方法来应对这一问题。

2.1.3 Red Stuff:Walrus

通过Red Stuff编码,Walrus可以实现每个节点的恢复成本为O(B/n),整个网络的总恢复成本为O(B)。我们在下文中详细探讨这一点。

2.2 Walrus概览

Walrus是基于纠删编码的去中心化存储协议。任何人都可以与Walrus交互以存储任意数据并证明数据已被存储。与IPFS类似,Walrus本身不是区块链。然而,Walrus利用了Sui网络来协助管理存储节点的生命周期、大块数据的生命周期以及引入激励系统。

Sui通过其自身的共识机制和智能合约,已实现了比其他区块链更高的可扩展性。然而,如果Sui不仅处理交易数据还处理大块数据,这将是低效的,因为所有节点都将复制大量的大块数据,大大增加了复制因子(指的是整个网络中相对于原始数据的复制和存储量)。

因此,Walrus采用纠删编码将大块数据分割成称为“分片”(sliver)的较小单位并分配给节点,使得可以通过复制因子仅为4–5的去中心化协议来存储大规模数据。尤其是,Walrus利用一种称为Red Stuff的编码方法,与现有的去中心化存储协议不同,大大减少了数据恢复成本。那么Red Stuff是什么?

2.3 Red Stuff

2.3.1 编码

不同于RS编码,Red Stuff在两个维度上对大块数据进行编码,这样有利于分片的高效恢复。主要维度的编码类似于RS编码,将B分成f+1个主分片。Red Stuff更进一步,将f+1个主分片每一个都分成2f+1个次分片,形成一个(f+1) * (2f+1)的矩阵。

基于该二维矩阵,为两个维度生成额外的修复符号(符号是比分片更小的数据单位)。首先,将2f+1列的符号从f+1扩展到3f+1,然后将f+1行的符号从2f+1扩展到3f+1。

B的承诺可以很容易地计算得出。W计算包括额外修复符号在内的每行和每列的承诺,然后将所有这些分片承诺结合起来创建大块数据的承诺。

2.3.2 写入

在Walrus协议中存储数据的过程类似于使用现有RS编码的协议。W使用Red Stuff对原始数据进行编码生成分片对并发送到每个节点。分片对指的是一对主和次分片,总共生成3f+1个分片对。

W然后将3f+1个分片对及其承诺传播到3f+1个节点。接收这些的节点通过承诺验证分片并将签名发送回W。当W接收到2f+1个签名时,它生成一个可用性证书并将其发布到链上(Sui网络)。

2.3.3 读取

从Walrus读取数据的过程也类似于使用现有RS编码的协议,只需要使用主分片。当R从存储节点接收到f+1个或更多有效的主分片时,它可以恢复B并读取数据。

2.3.4 恢复

与RS编码相比,Red Stuff的最大优势体现在数据恢复过程中。假设网络处于异步环境,节点可以自由进出,可能存在未从W接收到分片的节点。因此,这些节点需要与其他节点通信以恢复分片。

让我们通过上图(f=1)来看一个未接收到数据分片的节点如何恢复数据。

  • a:假设节点1拥有第一组完整的数据分片,节点3拥有第三组完整的数据分片,而节点4需要恢复第四组数据分片。
  • b:节点1和节点3将与第四组数据分片重叠的符号(S14, S34, S41, S43)发送给节点4。
  • c:由于节点4现在拥有了f+1个或更多用于第四组次级分片的符号,它可以恢复该次级分片。扩展此逻辑,所有2f+1个诚实节点都能恢复其次级分片。
  • d:2f+1个节点都拥有次级分片意味着每行有2f+1个符号,这使得可以利用这些2f+1个符号恢复所有主分片。综上所述,如果网络中有f+1个或更多节点拥有数据分片,剩余的节点就可以通过与它们的通信恢复所有分片。

一个符号的大小是O(B/n²),每个节点需要下载O(n)个符号,因此每个节点的恢复成本为O(B/n)。扩展到整个网络,所有节点恢复分片的总成本为O(B)。考虑到在完全复制方法中恢复数据的成本为O(n²B),在编码分享方法中为O(nB),Red Stuff方法可以以O(B)的成本高效地完成此过程。换句话说,无论网络中参与节点的数量(n)如何,数据恢复的成本都是恒定的。

2.4 Walrus存储流程

Red Stuff是一种数据编码方法。接下来,让我们从整体上看看Walrus中数据存储的流程,包括与Red Stuff以及Sui网络的交互。

  1. 想要在Walrus上存储数据的用户需要获取存储资源。用户可以直接从Sui网络上的Walrus系统对象智能合约或从二级市场购买存储资源。存储资源可以理解为在Walrus中存储数据的权限,指定了开始和结束的epoch(具体信息见下),以及可存储的容量。
  2. 用户将希望存储的数据块应用Red Stuff编码,并计算出blob ID。后续步骤可以由用户直接完成,或由网络中的发布者代为完成。
  3. 用户在Sui网络上更新存储资源以触发事件,将blob ID注册到存储资源中。
  4. 用户将数据块元数据传播给所有存储节点,并将每个数据分片分发到相应节点。
  5. 存储节点接收数据分片,验证元数据是否匹配blob ID,分片是否匹配元数据,以及传输分片的用户是否拥有相应的存储资源。如果验证有效,存储节点会为相应分片发送签名给用户。
  6. 当用户收到2f+1个或更多签名后,便生成一个可用性证书并将其传送到Sui网络。此时,Sui网络上的PoA(point of availability,可用点)状态被更新,表示该数据块对所有人可用。
  7. 如果在确认PoA后仍有未接收到该数据块分片的存储节点,它们可以与其他存储节点同步以恢复数据分片。

值得注意的是,Walrus协议引入了 epoch(纪元)的概念,参与的存储节点集随着每个纪元而变化。每个纪元中分配给存储节点的数据量会根据委托的WAL token数量而变化。同时,由于每个纪元内的参与节点会变动,每次纪元更换时都不可避免地要进行分片转移过程。默认情况下,分片是直接从前一节点传送到新节点,而无需经过恢复过程。

但是,如果数据量过大且分片传输时间超过一个纪元的长度,当前纪元可能无法结束。为防止这种情况发生,Walrus将数据存储(写入)和数据检索(读取)过程分配到不同的纪元中,并在该纪元结束前分离。

换句话说,当纪元发生更换并开始节点重构过程时,数据存储过程从此点开始在下一个纪元继续进行,而数据读取过程仍在当前纪元中继续。当下一个纪元的新委员会中2f+1个或更多节点表示分片恢复已完全准备就绪时,读取操作也平滑地过渡到下一个纪元。

3. Walrus应用案例

让我们看看Walrus的一些使用案例。

3.1 Decrypt媒体

Decrypt是一家专注于Web3的媒体公司,他们在9月的Token 2049活动上宣布计划将文章和视频存储在Walrus上。Decrypt使用Walrus的优势包括:

  • 真实性:作为一家媒体公司,确保内容的真实性至关重要。Decrypt可以通过将内容存储在Walrus上来保证真实性。
  • 永久性:根据Pew Research Center的数据,从2013年到2023年,超过1/3的在线内容已经丢失。通过将内容存储在Walrus上,Decrypt可以长期保留其内容。
  • 盈利性:Walrus计划促进Decrypt内容与dApp的互操作性,使Decrypt更容易从内容中获利。例如,可以将加密的媒体存储在Walrus上,仅向付费订阅者提供解密密钥以访问内容。

3.2 Walrus Sites

Walrus Sites是基于Sui和Walrus的去中心化前端网站。HTML、CSS、JavaScript和图像等基本源代码存储在Walrus上,入口点则作为对象存储在Sui上。这些对象包含网站的元数据并指向存储网站源代码的blob ID。

有趣的是,Walrus的文档已经是一个由Walrus托管的Walrus Sites实例。此外,Walrus在Sui测试网上提供了Flatland NFT作为Walrus Sites的示例。Flatland是一个在Sui上的NFT系列,用户可以通过Walrus托管的前端铸造,每个NFT都有自己个性化的Walrus Site。

3.3 Akord

Akord是一个基于Walrus的数据管理平台,提供类似Dropbox的界面和用户体验。Akord最显著的特征是其端到端加密功能,确保了数据隐私。用户可以像使用Web2服务一样轻松加密并存储数据,而通过Akord存储的数据则安全地存放在Walrus上。

3.4 其他

  • DA层:除了存储任意文件,Walrus还可以通过其纠删码机制安全地存储汇总网络的交易数据。这意味着Walrus可作为类似于Celestia、EigenDA或Avail的DA层。
  • AI:Walrus可存储AI模型训练和推理中需要真实性或透明度的数据,例如用于AI模型训练的干净数据或AI模型权重。
  • 区块链历史:对于快速扩展的区块链网络,管理自创世块以来的整个区块链历史是极具挑战性的。通过适当的保障措施,Walrus可以作为这些区块链历史的存档。

3.5 测试网Blob上传

来源:Walrus

目前,任何人都可以在Walrus测试网上存储任意文件。用户还可以使用blob ID搜索存储的大块数据,有兴趣体验Walrus的读者可以尝试一下。尽管测试网上线不到一个月,Walrus已经快速发展,存储了4343 GB的数据容量。

4. 结语

最近,Sui生态受到了广泛关注,并以惊人的速度增长。我认为这是因为Sui不断在友好的应用领域(如Sui上的Move、Deepbook、zkLogin、SuiNS)以及基础设施领域(如Narwhal、Bullshark 和Mysticeti)中进行创新。Walrus也是Sui创新的一部分,通过解决Sui网络难以独自处理的链下大块数据存储问题,它将使Sui生态中的应用更加多样化。

此外,尽管Walrus与Sui网络关系密切,但它显然是与Sui区块链独立的一个协议。因此,我们期望Walrus不仅仅是一个简单的数据存储工具,它还有可能作为rollups的DA层运行。此外,我们看到Walrus的作用将不仅限于Sui生态,其他区块链生态的协议也可以利用Walrus作为其存储层。


关于Sui Network

Sui是基于第一原理重新设计和构建而成的L1公有链,旨在为创作者和开发者提供能够承载Web3中下一个十亿用户的开发平台。Sui上的应用基于Move智能合约语言,并具有水平可扩展性,让开发者能够快速且低成本支持广泛的应用开发。获取更多信息:https://linktr.ee/sui_apac

官网|英文Twitter|中文Twitter|Discord|英文电报群|中文电报群


http://www.kler.cn/a/400180.html

相关文章:

  • React Native 全栈开发实战班 - 数据管理与状态之Zustand应用
  • MySQL的聚簇索引和二级索引
  • 极速入门数模电路
  • PgSQL汇总
  • 贪心算法入门(三)
  • 热点更新场景,OceanBase如何实现性能优化
  • 【C++学习(36)】C++20的co_await 的不同使用方式和特性
  • Cellebrite VS IOS18Rebooting
  • 建设项目全生命周期数智化归档与协同管理平台
  • 【第七课】Rust所有权系统(三)
  • React|bpmn.js|react-bpmn使用示例详解
  • STARTS:一种用于自动脑电/脑磁(E/MEG)源成像的自适应时空框架|文献速递-基于深度学习的病灶分割与数据超分辨率
  • 区块链中的wasm合约是什么?
  • 主界面获取个人信息测试服务端方
  • 第6章-详细设计 6.4归一化
  • Verilog HDL学习笔记
  • JDK、MAVEN与IDEA的安装与配置
  • pytorch的模型load
  • C语言练习.if.else语句
  • 全新UI H5购物商城系统存在前台任意文件上传漏洞
  • 每日一题3239.最少翻转次数使二进制矩阵回文;
  • Elasticsearch-Elasticsearch-Rest-Client(三)
  • django从入门到实战(一)——路由的编写规则与使用
  • CS DAC的Matlab建模与电路设计
  • MSTP知识点
  • 学习笔记026——Redis基本操作命令