聊聊 @SuiNetwork 团队开发的另一个存储项目 @WalrusProtocol 🧐🧐 Sui 开发公司 Mysten Labs,其实还开发了一个数据层项目 @WalrusProtocol 。 Walrus 是做数据存储和数据可用的项目。我研究完就一个感受——“牛逼”。这是我见过的最好的存储项目。 以下是正文, 去中心化存储项目主要有两类。 第一类采用完全复制(full replication)方式,以低效的冗余换取安全,即每个节点都存储完整数据副本,代表项目 @Filecoin Arweave 。 第二类采用 Reed-Solomon 纠删码方式,将原始数据切片保存,代表项目 @Storj 、Sia 等。 ———————————————————————————————— 用说人话的方式解释纠删码(Erasure Codes) 纠删码(Erasure Codes)的存储方式需要解释下,严谨来说,是将原始文件分割成 f+1 个原始切片,生成 2f 个额外的修复切片(repair slivers),每个存储节点保存一个不同的切片,任意 f+1 个切片就能重建原始文件。 好吧,你可以跳过这段不说人话的表述,来看下面这段。 假设我们要保存 4 个重要数字:[3, 7, 2, 5],这 4 个数字就是我们的"原始切片"。 接下来,我们要生成额外切片, 修复切片1 = 3 + 7 + 2 + 5 = 17 修复切片2 = 3×1 + 7×2 + 2×3 + 5×4 = 47 修复切片3 = 3×1² + 7×2² + 2×3² + 5×4² = 131 现在我们有 7 个切片:[3, 7, 2, 5, 17, 47, 131]了,对吧。 假设系统有7个节点,我们分发出去, 张三:3 李四:7 王五:2 赵六:5 钱七:17 孙八:47 周九:131 假设李四、赵六、周九丢失了数据,我们只有:[3, _, 2, _, 17, 47, _] 。 那怎么恢复原始数据咧? 还记得额外切片那里的公式么?没错,解一个二元一次方程。 3 + X + 2 + Y = 17 3×1 + X×2 + 2×3 + Y×4 = 47 得 X=7,Y=5 。 当然这只是一个很简易的例子。 你只需要记住纠删码达成的效果就好。效果是,只要有超过 1/3 节点正常就行。 换言之,在纠删码系统内,节点只存储数据切片就可以,只要超过 1/3 节点能运作,数据就可以恢复,但是需要节点稳定,因为替换成本高。 但在完全复制的系统内,需要有下载全部数据副本的全节点存在。 前者以牺牲部分安全性为代价换取低成本,后者则是以冗余为代价换取系统安全稳定。 ———————————————————————————————— Walrus 的二维 (two-dimensional, 2D) 纠删码创新 Walrus 的方式,其实是去了中间点,在二者之间达成某种平衡。核心也是采用纠删码方式,只是在此技术上创造了改进性的技术 Red Stuff。 Red Stuff 采用了更巧妙的编码方式,对数据分片。还记得之前纠删码的例子吗? 要保存 4 个重要数字:[3, 7, 2, 5],要生成额外切片,最后解二元一次方程。 还是这个例子解释下 Red Stuff。Red Stuff 编码方式是二维 (two-dimensional, 2D) 编码算法,你可以想象成“数独”。 3 7 25 在 Red Stuf 编码里变成了, [3 7] [2 5] 假设编码规则是, 第3列 = 第1列 + 第2列 第4列 = 第1列×2 + 第2列×2 第3行 = 第1行 + 第2行 第4行 = 第1行×2 + 第2行×2 这是额外切片变成了 [3 7 10 20] [2 5 7 14] [5 12 18 34] [10 24 34 68] 接下来,我们按照行和列分发给节点, 张三:3 7 10 20,也就是第一行 李四:2 5 7 14,第二行 王五:5 12 18 34,… 赵六:10 24 35 68,… 钱七:3 2 5 10,第一列 孙八:7 5 12 24,… 周九:10 7 18 34,… 郑十:20 14 34 68,… 假设王五丢了数据,也就是第3行数据丢失。那其实他只需要问第一行的张三和第二行的李四,分别要他们 10 和 7 数字就好了。 同样是二元一次方程求解,得出结果。 从以上通俗但不那么严谨的例子中,我们可以总结 Red Stuff 的特点, 恢复数据时,不需要完整的行或列,只需特定位置的数据即可。这个特性可以称之为“局部性”。 另外,一个数字,可以从行和列两个维度恢复,也就是“信息重用”。 再其次,对于复杂数据,可以先恢复更“容易”方便计算的维度,再利用已恢复数据计算困难维度,也就是“渐进性”。 在实际应用中,假设某文件,在纠删码架构下,编码为 301个切片。 通常的纠删码系统,恢复1个切片需 101个切片,而在 Red Stuff,恢复1对切片只需约 200个单独的符号。 假设存储 1GB 文件,系统有 301 个节点,通常的纠删码系统,节点故障后需要下载 1GB 才能恢复切片,而 Red Stuff,每个节点存储:主切片(3.3MB) + 次切片(3.3MB) = 6.6MB。 恢复时只需下载约 10MB 的符号数据,节省 99% 的带宽。 这个设计让 Walrus 能够以极低的带宽成本维护一个大规模的去中心化存储网络,将恢复成本从 O(|blob|) 降到 O(|blob|/n)。这就是为什么 Red Stuff 被称为"自我修复"的原因。 除此之外,Walrus 加入了很多安全特性,比如是首个在异步网络中支持存储挑战的协议。 这里所谓的“挑战”,类似于 Optimistic 机制对节点数据存储情况的抽查。 Red Stuff 每个切片都添加可验证的加密承诺(commitments),每个符号可独立验证等等。 总结下特点, 1)首个异步安全:解决了分布式存储对节点的信任问题; 2)自验证:内置防伪机制; 3)渐进式:处理节点动态变化; 4)可扩展:支持数百到数千节点; 以在安全和效率间找到最佳平衡。 (以上是本文第一部分)
2.64万
13
本页面内容由第三方提供。除非另有说明,欧易不是所引用文章的作者,也不对此类材料主张任何版权。该内容仅供参考,并不代表欧易观点,不作为任何形式的认可,也不应被视为投资建议或购买或出售数字资产的招揽。在使用生成式人工智能提供摘要或其他信息的情况下,此类人工智能生成的内容可能不准确或不一致。请阅读链接文章,了解更多详情和信息。欧易不对第三方网站上的内容负责。包含稳定币、NFTs 等在内的数字资产涉及较高程度的风险,其价值可能会产生较大波动。请根据自身财务状况,仔细考虑交易或持有数字资产是否适合您。