Filecoin市場可以有效運行,因為客戶可以確信網絡上的存儲礦工正確地存儲他們的數據。這種信心來自於Filecoin自己獨特的證明系統,以確保在Filecoin網絡上的存儲按照合同工作。
使用Filecoin,礦工的存儲將被公開審計。換句話說,我們的存儲證明為Filecoin網絡的每個用戶提供了保證,即所有礦工都按照承諾的那樣存儲數據。存儲驗證是將Filecoin市場粘合在一起的粘合劑;它確保了網絡上存儲的所有數據的完整性。
為了讓這些數據完整性檢查能夠給存儲用戶提供他們想要的保證,這些檢查必須是Filecoin最基本協議的一部分。這就是Filecoin證明系統發揮作用的地方。
證明系統是參與者(通常是礦工)用來驗證存儲服務的加密協議。Filecoin的證明系統解決了分布式存儲以前的一個棘手問題:礦工們如何證明他們真的存儲了他們所說的時間數據以及他們專用的物理空間?要理解這一點,我們需要看看Filecoin是如何實現分散存儲的,以及是什麼讓它的證明系統獨一無二。
在中心化存儲服務中,我們信任知名的公司或實體,它們可以保證系統的完整性和安全性。這個第三方實體是維護網絡信任的關鍵。例如,當我們使用Amazon S3進行雲存儲時,我們並不真正信任Amazon所使用的數據伺服器網絡。相反,我們相信亞馬遜會保證網絡像承諾的那樣運行——根據公司的服務水平協議,我們在亞馬遜存儲的數據將是安全和可用的。
分散存儲網絡中的信任更難實現。在Filecoin網絡上,世界上任何人都可以提供存儲空間。但是要在像Filecoin這樣的分散網絡上保持信任,你需要在全球網絡本身中建立信任。
Filecoin的證明系統正是通過在Filecoin區塊鏈的協議層中建立信任來做到這一點的。Filecoin協議利用存儲證明作為在Filecoin區塊鏈中達成共識的核心機制。
在每個公共區塊鏈上,「共識」定義了關於存在於區塊鏈上的數據條目的協議。為了實現這一共識,區塊鏈依賴於共識算法來生成新的區塊,以保護區塊鏈不受虛假數據輸入的影響。這些算法精確地確定了礦工如何構建和維護區塊鏈。
但是,儘管其它區塊鏈依賴於要求礦工執行浪費工作的共識算法(例如,POW),但Filecoin的共識機制卻使礦工參與了提供和驗證存儲數據完整性的有用工作(各種存儲證明,Proof-of-Replication and Proof-of-Spacetime)。
這意味著Filecoin區塊鏈本身會驗證礦工執行的存儲行為。這就是Filecoin在其分散網絡的協議層中建立信任的方式。作為核心,Filecoin的共識算法由兩個密封機制一起,在Filecoin鏈上公開驗證數據存儲:Proof-of-Replication and Proof-of-Spacetime。
要驗證Filecoin分散網絡上的存儲,你需要證明兩件事。首先,你需要證明在給定的存儲空間中存儲了正確的數據集。其次,你需要證明在給定的時間段內連續存儲了相同的數據集。
Filecoin的證明算法執行這些驗證任務。複製證明證明給定的礦機存儲的是客戶端原始數據的物理唯一副本,而時空證明證明客戶端數據是隨時間連續存儲的。這兩種證明都是這樣的。
複製證明(PoRep)從一個稱為「密封」的過程開始。一個礦工奉獻了一部分可用的存儲空間,稱為「扇區」,以存儲客戶的數據。一旦這個區域被填滿,它就被密封了。封口是一套操作,逐步將扇區轉變為原始數據的唯一副本。該副本與Filecoin礦工的公鑰關聯。為了執行最終的PoRep,礦工然後將副本(其CommR)的加密哈希提交到公共Filecoin區塊鏈。
通過PoRep,礦工可以提供公開證明,證明他們在執行證明時正在存儲客戶數據的唯一編碼。只有擁有全部原始數據的礦工才能向Filecoin鏈上提交正確的CommR(對副本的鏈上承諾)。但是,僅一個PoRep並不能驗證存儲是否隨時間連續。
這就是時空證明(PoSt)的作用。在PoSt中,要求礦工為他們維護的隨機選擇的存儲扇區提供PoRep。這是通過向礦工發出加密挑戰的程序來完成的,只有通過直接諮詢密封部門才能正確回答。礦工必須在嚴格的時限內應對這一挑戰。每個礦工必須每天證明其所有存儲,並且還隨機選擇礦工來證明存儲以贏得區塊。密封的計算難度確保了礦工必須保持對密封區域的隨時訪問和完整性。
PoRep和PoSt共同構成了Filecoin獨特的證明系統,即存儲證明和空間證明的結合。
除了它的證明系統,Filecoin網絡也依賴博弈論動機來阻止惡意或疏忽的行為。所有同意在Filecoin網絡上存儲數據的礦商,在籤訂協議時必須提供Filecoin形式的擔保。任何未通過PoSt檢查的存儲礦機都將受到懲罰,每當應用懲罰時,抵押品的一部分將丟失。在過多的處罰之後,所有的抵押品都將丟失,礦商也被禁止再向客戶提供倉儲服務。