Filecoin: 一個去中心式存儲網絡之二
2、去中心化存儲網絡的定義
本節中我們要介紹去中心化存儲網絡(DSN)的概念。 DSNs匯聚來自眾多獨立提供者的存儲能力,并通過自我協調的方式為客戶提供數據讀取服務。這種協調是去中心化的,不需要中心式信任方的參與:協議通過協調和查證獨立個體的操作來實現系統的安全運行。根據系統要求,DSNs可以調用不同的協調策略,包括拜占庭協議(Byzantine Agreement),流言算法(Gossip Protocols)或者CRDTs等。稍后在第四節中,我們會提供Filecoin DSN的具體架構。
【定義 一】 DSN方案Ⅱ是由存儲提供商和客戶運行的協議元組:
(Put; Get; Manage)
Put(data)→ key: 客戶執行Put協議,在特定的身份密匙(key)下存儲數據(data)。
Get(key) → data: 客戶執行Get協議,讀取利用密匙存儲的數據。
Manage(): 各參與者形成的網絡通過Manage協議進行協作,以此來控制可用的存儲空間,審查存儲提供者供應的服務,以及修復一些可能存在的錯誤。
Manage協議由存儲提供商(通常也有客戶參與)或者審查網絡來運作1。DSN方案Π必須確保數據的完整性和可恢復性,以及在管理和存儲中的容錯性。這些概念會在后文中給出定義。
2.1 容錯
2.1.1 管理錯誤
我們將存儲故障定義為Manage協議參與者導致的拜占庭錯誤(Byzantine Faults)。基于Manage協議的DSN方案應當具有容錯性。如果管理錯誤違反了容錯性假設,可能會影響系統的活躍度和安全性。
舉例來說,假設有一個DSN方案Π,它的Manage協議需要拜占庭協議(Byzantine Agreement,BA)來審核存儲提供者。在這樣一個協議中,網絡從存儲提供者那里收到存儲證明,然后運行BA來驗證這些有效性。假節點總數為n,BA最多可以容納f個錯誤節點,那么我們的DSN可以容忍的故障節點數為f<n/2 個。如果違反這些假設,審計就要做出妥協。
2.1.2 存儲錯誤
我們將存儲錯誤定義為阻止用戶獲取數據的拜占庭錯誤。也就是說,這些錯誤可能是存儲礦工丟失了一些數據片段,或是檢索礦工在某些片段中停止了服務。一個成功的Put操作應當是(f,m)-tolerant的形式—如果輸入的數據被儲存在m個獨立存儲提供者處(總數為n),可以容納的拜占庭提供者最多為f。f和m 兩個參數取決于協議的實現。協議的設計者可以自行設定這兩個參數,也可以把選擇交給用戶,將Put(data)擴展為Put(data, f, m)。在Get命令中,如果錯誤的存儲提供者數量小于f,該命令就可被成功執行。
2.2 特性
這里我們價紹DSN方案應有的兩種特性,以及Filecoin DSN所具備的其他特性。
2.2.1 數據完整性
該屬性要求沒有任何有限對手(bounded adversary) A可以使客戶在Get操作結束的時候接受被更改或偽造的數據。
2.2.2 數據恢復性
該屬性要求:給出的Π具有容錯假設,如果有些數據已經被成功存儲在Π中,并且存儲提供者持續遵循協議,那么客戶最終應當能夠檢索到數據。
2.2.3 其他特性
DSNs可以針對具體應用提供特定的其他屬性。本文定義了Filecoin DSN所需要的三個關鍵屬性:公開可驗證性、可審查性和激勵兼容性。