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