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