聊聊 @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 等在內的數字資產涉及較高程度的風險,其價值可能會產生較大波動。請根據自身財務狀況,仔細考慮交易或持有數字資產是否適合您。