聊聊 @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
本頁面內容由第三方提供。除非另有說明,OKX 不是所引用文章的作者,也不對此類材料主張任何版權。該內容僅供參考,並不代表 OKX 觀點,不作為任何形式的認可,也不應被視為投資建議或購買或出售數字資產的招攬。在使用生成式人工智能提供摘要或其他信息的情況下,此類人工智能生成的內容可能不準確或不一致。請閱讀鏈接文章,瞭解更多詳情和信息。OKX 不對第三方網站上的內容負責。包含穩定幣、NFTs 等在內的數字資產涉及較高程度的風險,其價值可能會產生較大波動。請根據自身財務狀況,仔細考慮交易或持有數字資產是否適合您。