本文深入探讨了 Sui 区块链的存储基金及其局限性,并介绍了 Mysten Labs 推出的新型数据存储协议 Walrus。
Sui 通过一种称为 storage fund(存储基金)的激励系统实现了可持续的数据存储。然而,对于所有 Sui 节点来说,存储包括媒体文件在内的大量 blob 数据效率低下。
Walrus,一种去中心化存储协议,可以通过使用一种名为 Red Stuff 的纠删码方法有效地存储 blob 数据。Walrus 利用 Sui 网络来实现诸如激励系统和节点协调等必要功能。
Red Stuff 使用二维编码,与完全复制方法或使用 RS 编码的方法相比,这使得数据恢复更具成本效益。这在节点可以自由加入和离开的环境中,或者在节点集随着每个 epoch 持续变化的环境中,尤其有利。
Walrus 的一个值得注意的用例是 Web3 媒体公司 Decrypt,该公司计划将其内容上传到 Walrus。此外,Walrus Sites 允许使用 Walrus 和 Sui 构建去中心化的前端。
Mysten Labs 在消费者和基础设施层面持续创新,例如 zkLogin 和 Mysticeti。Walrus 是另一个这样的创新,通过链下处理大规模数据存储,从而在 Sui 生态系统中实现更广泛的应用,而这对于 Sui 自身来说是具有挑战性的。
什么是区块链?鉴于区块链是密码学、哲学、经济学和计算机科学等多个学科的产物,每个人对区块链的理解可能有所不同。在这种背景下,虽然区块链相比现有系统提供了许多优势,例如透明性、安全性以及去中心化,但这些最终都源于一个关键特征:“分布式账本”。
简单来说,区块链就是一个由多个服务器维护的分布式账本。这些服务器通过共识算法共享和管理相同的交易历史。每个人都拥有相同的账本这一事实,催生了区块链的各种优势,使得分布式账本成为区块链技术的核心。
然而,与中心化服务器相比,管理分布式账本更具挑战性。由于在与全球节点通信的同时达成共识,因此难以实现可扩展性。此外,从硬件角度来看,将所有历史记录存储在每个节点上而不是单个服务器上是非常低效的。
例如,截至 2024 年 10 月,比特币区块链的总大小约为 600GB,而以太坊的 archive 节点大小约为 19.5TB,其 full 节点大小约为 1,100GB。如果优先考虑去中心化而非可扩展性的网络已经达到这种规模,我们可以预见,专注于可扩展性的网络将增长得更快(例如,Sei Network 是更快的区块链之一,已经意识到存储问题并在优化其数据库模型)。
虽然分布式账本的大小可能会迅速增加,但在网络的早期阶段,这不会构成重大问题。但是,如果这种情况持续存在,那么当分布式账本大小在未来变得非常大时,新节点加入网络的进入门槛将变得非常高,这可能会导致未来用户的交易费用增加。因此,大多数现有区块链的激励系统仅侧重于计算而非存储。虽然正在进行各种技术讨论(EIP-4444、Verkle Trie 等)以减轻节点的存储负担,但很少有尝试从激励系统角度解决存储问题。
在这方面,Sui 可以被认为是一个非常有趣的项目,因为它是一个 layer-1 区块链,从一开始就致力于通过激励措施来解决存储问题。Sui 旨在通过一种称为 Storage Fund(存储基金)的经济机制来实现可持续的数据存储,该机制的运作方式如下:用户提交给 Sui 验证者的费用分为 1) 与计算相关的 gas 费用和 2) 数据保留的存储成本。Sui 提前从用户那里收取永久数据存储的存储成本,并将其汇集到 Storage Fund(存储基金)中。当数据仍然存储在链上时,Storage Fund(存储基金)会不断地将累积的金额重新分配给验证者。此外,如果用户删除其数据,则可以获得相应存储成本的退款。
Sui 独特的链上数据存储系统产生两个影响:
由于用户在删除链上数据时可以收到存储成本返利,因此可以通过经济激励措施来减少分布式账本的容量。
预先收取存储费并将其作为未来验证者的激励分配的独特激励结构可以解决与存储相关的可持续性问题。
虽然 Sui 的 Storage Fund(存储基金)是一个强大的工具,但对于所有类型的数据来说,它都不是一种有效的方法。这是因为链上数据既包括用于状态计算的小容量基本数据,例如交易数据,也包括像 blobs 这样包含媒体文件的大量数据。
区块链交易数据体积小,对于计算分布式账本的状态至关重要,因此所有参与网络的节点都必须复制并存储它。但是,对于像图像、视频和音乐这样的大容量补充 blob 数据,所有节点都复制并存储它们是非常低效的。因此,为了也处理此类数据,Mysten Labs 正在积极推出一种名为 Walrus 的新型数据存储协议。但是,由于已经存在如此多的用于存档目的的去中心化存储协议,是否真的有必要再创建一个存储协议?Walrus 到底是什么,它与现有存储协议有何不同?
在深入研究 Walrus 之前,让我们研究一下现有的存储协议。包括图像、视频和文档在内的 blob 数据的链上存储在区块链行业中至关重要。blob 数据的著名示例包括原始 NFT 文件的链上存储、用于 AI 模型训练的数据集、dApp 的去中心化前端托管以及 rollup 交易数据的存储。正如这些示例所说明的,将某些东西存储在链上是一种可以证明完整性的强大行为。
由于这种重要性,许多协议在 Walrus 之前都曾尝试以去中心化的方式存储像 blobs 这样的大规模数据。Filecoin、Arweave、Storj 和 Sia 都是突出的例子。让我们研究一下这些协议如何处理 blob 存储,以及 Walrus 与它们的区别。
请注意,以下示例中使用的缩写含义如下:
B: blob
W: blob writer(blob 写入者)
R: blob reader(blob 读取者)
f: 拜占庭节点的数量
n: 节点总数
2.1.1 Full Replication: IPFS, Arweave(完全复制:IPFS,Arweave)
在分布式环境中存储 blobs 最直观和简单的方法是让节点复制并存储 W 上传的整个 B。例如,如果你上传一个图像文件,节点不是拆分和划分图像文件,而是按原样复制和存储图像文件。著名的例子包括 IPFS 和 Arweave。当然,这并不意味着参与 IPFS 和 Arweave 的存储节点会下载存储在整个网络中的所有文件;而是,它们以完整的形式存储一些文件。
W 将 B 和相应的 commitment(绑定 commitment,例如,哈希)传播到节点,并等待接收 f+1 个签名。(假设:n = 3f+1;需要至少 f+1 个签名才能确保至少有一个诚实节点(不包括 f 个拜占庭节点)存储了 B。)一旦收到 f+1 个签名,W 就可以生成一个可用性证书,保证任何人都可以完全访问该网络上的文件。
然而,完全复制有很多缺点,主要是效率低下:
Write(写入):当 W 将文件传播到节点以将数据存储在网络上时,它的复杂度为 O(nB)。
Read(读取):在异步环境中,读取数据会产生 O(nB) 的成本,因为必须将请求发送到 f+1 个节点。
Recovery(恢复):要在异步环境中恢复数据,存储节点必须向 f+1 个其他节点发送请求,每个存储节点的成本为 O(nB)。当应用于整个网络时,这将导致 O(n^2 B) 的成本。请注意,这是最坏情况下的成本。
2.1.2 Encode and Share: Storj, Sia(编码和共享:Storj, Sia)
如上所述,完全复制方法具有简单、直观和易于访问完整文件的优点,但其缺点是整个网络的高存储成本。为了解决这个问题,出现了使用 Reed Solomon (RS) 编码的去中心化存储网络。著名的例子有 Storj 和 Sia。
RS 编码是实现纠删码的一种著名方法,广泛应用于现实生活中的 CD、DVD、QR 码等。纠删码将原始数据分成多个部分,并从这些部分生成额外的恢复数据。即使丢失了一些数据,也可以使用恢复数据将原始数据恢复到一定程度。
让我们看一个编码和共享方法的例子。W 将 B 分成 f+1 个数据块,并额外编码 2f 个额外的修复块。由于 RS 编码的特性,只需从总共 3f+1 个块中取出 f+1 个块即可恢复原始 B。这里,每个块的大小均为 O(B/n)。
W 使用像 Merkle 树这样的绑定 commitment 来对所有块进行 commitment,并将每个块以及 inclusion 证明(表明该块包含在 Merkle 树中)发送到每个节点。接收块的存储节点使用 commitment 验证其有效性,并将签名发回给 W。
当 W 收到来自节点的至少 2f+1 个签名时(因为即使 2f+1 个节点中有 f 个是拜占庭节点,也可以通过 f+1 个节点恢复 B),它会生成可用性证书。与完全复制相比,编码和共享方法在数据写入和读取过程中效率更高,但仍然存在数据恢复效率低下的缺点。
Write(写入):由于 W 将大小为 O(B/n) 的块传播到网络以进行数据存储,因此总成本为 O(B)。
Read(读取):R 的复杂度为 O(B/n) * O(n) = O(B),因为它必须从节点请求块并接收 f+1 个有效响应。
Recovery(恢复):在异步环境中,要恢复数据,每个存储节点都需要从 2f+1 个节点接收块,因此会产生 O(B) 的成本。应用于整个网络,这将导致 O(nB) 的总成本,这仍然效率低下。
提高数据恢复过程的效率至关重要,因为作为一种去中心化协议,节点可以自由加入和离开网络。如果节点集随着每个 epoch 发生变化,则新节点需要从以前的节点接收和恢复块。Walrus 意识到了这个问题,因此采用了一种新的编码方法。
2.1.3 Red Stuff: Walrus(Red Stuff:Walrus)
Walrus 可以通过 Red Stuff 编码实现每个节点 O(B/n) 的恢复成本,以及整个网络 O(B) 的总恢复成本。让我们在下面更详细地 بررسی این مطلب。
Walrus 是一种基于纠删码的去中心化存储协议。任何人都可以与 Walrus 交互来存储任意数据并证明数据已存储。与 IPFS 类似,Walrus 本身不是区块链。但是,Walrus 利用 Sui 网络来帮助管理存储节点生命周期、blob 生命周期以及引入激励系统。
Sui 以其自身的共识和智能合约,与其他区块链相比,实现了极高的可扩展性。但是,如果 Sui 除了交易数据之外还要处理 blobs,那将是低效的,因为所有节点都会复制大量 blobs,从而大大增加了复制因子。(复制因子是指与原始数据相比,在整个网络中复制和存储的数据量。)
因此,Walrus 使用纠删码将 blobs 分成更小的单元 (称为 slivers),并将它们分配给节点,从而允许在复制因子仅为 4-5 的去中心化协议中存储大量数据。特别的是,与现有的去中心化存储协议不同,Walrus 具有通过使用一种名为 Red Stuff 的编码方法来显着降低数据恢复成本的优点。那么,什么是 Red Stuff 呢?
2.3.1 Encoding(编码)
与 RS 编码不同,Red Stuff 在两个维度上对 blob 进行编码。这是為了提高 sliver 的恢复效率。在主维度中,编码类似于 RS 编码,将 B 分成 f+1 个主 slivers。Red Stuff 更进一步,在次维度中将每个 f+1 个主 slivers 分成 2f+1 个次 slivers。结果,B 变成了一个 (f+1) * (2f+1) 的矩阵。请注意,上图中的例子假设 f=1。
基于这个二维矩阵,还会为两个维度生成额外的修复符号。(请注意,一个符号是比一个 sliver 更小的数据单元。)首先,2f+1 列的符号从 f+1 扩展到 3f+1,然后 f+1 行的符号从 2f+1 扩展到 3f+1。
可以很容易地计算出对 B 的 commitment。W 计算每行和每列的 commitment,包括额外的修复符号,然后组合所有这些 sliver commitment 来创建一个 blob commitment。
2.3.2 Write(写入)
在 Walrus 协议中存储数据的过程与使用现有 RS 编码的协议类似。W 使用 Red Stuff 编码原始数据以生成要发送到每个节点的 sliver 对。这里的 sliver 对是指主 sliver 和次 sliver 的一对,总共生成 3f+1 个 sliver 对。
然后,W 将 3f+1 个 sliver 对和 sliver commitment 传播到 3f+1 个节点。收到这些后,节点通过 commitment 验证 slivers,并将签名发回给 W。当 W 收到 2f+1 个签名时,它会生成一个可用性证书并将其发布在链上(Sui 网络)。这是因为即使 f 个拜占庭节点签名,也有来自 f+1 个诚实节点的签名,从而可以恢复原始数据。
2.3.3 Read(读取)
从 Walrus 读取数据的过程也与使用现有 RS 编码的协议相同,并且只需要使用主 slivers。当 R 从存储节点收到 f+1 个或更多有效的主 slivers 时,它可以恢复 B 并读取数据。
2.3.4 Recovery(恢复)
与 RS 编码相比,Red Stuff 的最大优势在数据恢复过程中显而易见。假设网络处于异步环境中,并且节点可以自由地进入和离开,则可能存在未从 W 接收到 slivers 的节点。因此,这些节点需要与其他节点通信以恢复 slivers。
让我们通过上图(f=1)检查一下未收到 slivers 的节点如何恢复数据。
a:假设一种情况,其中节点 1 完全拥有第一个 sliver 对,节点 3 拥有第三个 sliver 对,而节点 4 需要恢复第四个 sliver 对。
b:节点 1 和 3 将与第四个 sliver 对重叠的符号(S14、S34、S41、S43)发送到节点 4。
c:由于节点 4 现在对于第四个次 sliver 拥有 f+1 个或更多符号,因此可以恢复第四个次 sliver。扩展此逻辑意味着所有 2f+1 个诚实节点都可以恢复其次 slivers。
d:2f+1 个节点都拥有次 slivers 这一事实意味着每行中有 2f+1 个符号,这允许使用这些 2f+1 个符号来恢复所有主 slivers。总而言之,如果网络中 f+1 个或更多节点拥有 slivers,则其余节点可以与它们通信以恢复所有 slivers。
一个符号的大小为 O(B/n^2),并且每个节点需要下载 O(n) 个符号,因此每个节点的恢复成本为 O(B/n)。将其扩展到整个网络,所有节点恢复 slivers 的成本对应于 O(B)。考虑到在完全复制方法中,恢复数据的成本为 O(n^2B),在编码和共享方法中为 O(nB),Red Stuff 方法可以以 O(B) 的成本非常高效地处理此问题。换句话说,数据恢复成本与参与网络的节点数 (n) 无关,均为常数。
Red Stuff 是一种编码数据的方法。现在,让我们看看数据存储如何在 Walrus 中发生的大局,包括与 Red Stuff 和 Sui 网络的交互。
想要在 Walrus 中存储数据的用户获取存储资源。存储资源可以直接从 Sui 网络上的 Walrus 系统对象智能合约购买,也可以从二级市场购买。存储资源可以理解为在 Walrus 中存储数据的权限,指定开始 epoch、结束 epoch(以下详细信息)以及可以存储多少容量。
用户将 Red Stuff 编码应用于他们想要存储的 blob,并计算 blob ID。后续步骤可以由网络中存在的发布者直接或执行。
要向存储资源注册 blob ID,用户会在 Sui 网络上更新存储资源以触发事件。
用户将 blob metadata(元数据)传播到所有存储节点,并将每个 sliver 分发给相应的节点。
存储节点接收 slivers 并验证 metadata 是否与 blob ID 匹配,以及 slivers 是否与 metadata 匹配,以及传输 sliver 的用户是否拥有适当的存储资源。如果认为有效,存储节点会将各自 slivers 的签名发送给用户。
当用户收到 2f+1 个或更多签名时,他们会生成可用性证书并将其传输到 Sui 网络。从此刻起,PoA(可用性证明)状态会在 Sui 网络上更新,表明所有人都可以使用该 blob。
如果即使在确认 PoA 之后,仍有未收到该 blob 的 slivers 的存储节点,则它们可以与其他存储节点同步以恢复 slivers。
请注意,Walrus 协议具有用于某个期间的 epoch 概念,并且参与存储节点的集合会随着每个 epoch 而变化。分配给存储节点的数据量因每个 epoch 委托的 WAL token 的数量而异。此外,由于每个 epoch 中参与节点可能会发生变化,因此每次 epoch 发生变化时,都会不可避免地进行 slivers 传输。请注意,在默认情况下,slivers 会直接从上一个节点传输到新节点,而不是通过恢复过程进行传输。
但是,如果数据过多,并且 sliver 传输时间变得比 epoch 还要长,则 epoch 可能不会结束。为了防止这种情况,Walrus 会在 epoch 结束之前,将数据存储(写入)和检索(读取)流程分成不同的 epochs。
换句话说,当 epoch 发生变化并且节点重新配置过程开始时,数据存储过程将从此时开始在下一个 epoch 中进行,而数据读取过程仍在当前的 epoch 中继续进行。当下一个 epoch 的新委员会中 2f+1 个或更多节点表明 sliver 恢复已完全准备好时,读取操作也会顺利过渡到下一个 epoch。
让我们研究一下 Walrus 的一些用例。
Decrypt 是一家专注于 Web3 的媒体公司,该公司在今年 9 月的 Token 2049 活动上宣布了将其文章和视频存储在 Walrus 上的计划。Decrypt 通过利用 Walrus 可以获得的优势包括:
Authenticity(真实性):作为一家媒体公司,确保内容真实性至关重要。Decrypt 可以通过将内容存储在 Walrus 上来确保真实性。
Permanence(永久性):根据皮尤研究中心的数据,从 2013 年到 2023 年,超过 1/3 的在线内容已经丢失。通过将内容存储在 Walrus 上,Decrypt 可以长时间维护其内容。
Profitability(盈利能力):Walrus 计划促进 Decrypt 的内容与 dApp 之间的互操作性,从而使 Decrypt 能够轻松地通过其内容获利。例如,加密媒体可以存储在 Walrus 上,而解密密钥仅提供给付费订阅者以访问内容。
Walrus Sites 是基于 Sui 和 Walrus 的去中心化前端网站。HTML、CSS、JavaScript 和图像等基本来源存储在 Walrus 上,它们的入口点则作为对象存储在 Sui 上。这些对象包括网站的元数据,并指向存储网站来源的 blob ID。
有趣的是,Walrus 的文档已经是 Walrus Sites 的一个示例,由 Walrus 托管。此外,Walrus 还在 Sui 测试网上提供 Flatland NFT,作为 Walrus Sites 的一个示例。Flatland 是 Sui 上的一个 NFT 收藏品,可以从 Walrus 托管的前端铸造,每个 NFT 都有自己个性化的 Walrus Site。
Akord 是一个基于 Walrus 的数据管理平台,它提供了类似于 Dropbox 的界面和用户体验。Akord 最独特的功能是,它使用端到端加密,通过在数据存储在平台上时对其进行加密来确保数据隐私。用户可以像使用 Web2 服务一样轻松地加密和存储数据,并且通过 Akord 存储的数据会安全地存储在 Walrus 上。
DA Layer(DA 层):除了存储任意文件之外,由于使用纠删码,Walrus 还可以安全地存储 rollup 网络的交易数据。这意味着 Walrus 可以像 Celestia、EigenDA 或 Avail 一样充当 DA 层。
AI:Walrus 可以存储 AI 模型训练和推理中需要真实性或透明度的数据,例如用于 AI 模型训练的干净数据或 AI 模型权重。
Blockchain History(区块链历史记录):对于快速可扩展的区块链网络,管理来自创世区块的整个区块链历史记录可能非常具有挑战性。在采取适当的安全措施的前提下,Walrus 可以充当这些区块链历史记录的存档。
资料来源:Walrus
请注意,目前,任何人都可以将任意文件存储在 Walrus 测试网上。你还可以使用 blob ID 搜索存储的 blobs,因此鼓励有兴趣体验 Walrus 的读者尝试一下。虽然测试网启动还不到一个月,但 Walrus 已经迅速增长,存储容量达到 4,343 GB 数据。
最近,Sui 生态系统受到了极大的关注,并且正在以令人难以置信的速度增长。我相信这是因为 Sui 不断在应用友好领域(例如 Sui 上的 Move、Deepbook、zkLogin、SuiNS)和基础设施领域(例如 Narwhal、Bullshark 和 Mysticeti)进行创新。Walrus 也是 Sui 朝着这个方向发展的一部分,通过解决 Sui 网络自身难以处理的链下 blob 存储问题,它将使 Sui 生态系统中能够利用更多样化的应用程序。
此外,虽然 Walrus 将与 Sui 网络保持非常密切的关系,但它显然是一个独立的协议,与区块链无关。因此,我们预计 Walrus 不仅可以用作简单的数据存储,而且还可以潜在地充当 rollups 的 DA 层。此外,我们认为 Walrus 将发挥重要的作用,而不仅仅是 Sui 生态系统,因为其他区块链生态系统中的协议也可以将 Walrus 用作其存储层。
- 原文链接: 4pillars.io/en/articles/...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!