Filecoin白皮書中文版-星際大陸譯(二)

Filecoin白皮書中文版-星際大陸譯(二)

Filecoin:一種去中心化的存儲網路

協議實驗室

Neo Ge譯

2017年8月14日

摘要

互聯網正處於一場革命當中:中心化專有服務正在被去中心化開放式服務所取代;可信中心被可驗證計算取代;脆弱的位置地址被彈性內容地址所取代;低效的整體式服務被點對點演算法市場所取代;比特幣、以太坊和其他的區塊鏈網路已經證明了去中心化交易賬本的有效性。這些公共賬本處理複雜的智能合約應用程序並且交易價值數百億美金的加密貨幣資產。參與者形成一個提供有效支付服務的、沒有中心化管理或信任中心的去中心化網路,這些系統是互聯網開放服務的第一個實例。IPFS根據去中心化網路自身已經證實了內容定址的有效性,即在全球點對點網路上提供數十億文件使用的服務。它解放孤島數據、留活網路分區、離線工作、繞開審查並且給予了數字信息永久性。

Filecoin是一個去中心化的存儲網路,它讓雲存儲變身成了一個演算法市場。這個市場基於一個本地協議通證(也叫Filecoin)來運行,在這裡礦工們可以通過向客戶提供存儲獲取Filecoin。反過來,客戶花費Filecoin僱傭礦工們來存儲或分發數據。和比特幣一樣,Filecoin礦工們為了可觀的獎勵而競爭挖區塊,但是Filecoin的挖礦功率是和有效存儲成比例的,即直接為客戶提供有用的服務(這裡不像比特幣挖礦僅限於維護區塊鏈的共識)。這種設計為礦工們提供了巨大的激勵,使他們儘可能的集聚存儲以便出租給客戶。Filecoin協議將這些集聚來的資源編織成一個世界上任何人都可以依靠的自我修復存儲網路。這個網路通過複製和分散內容實現穩健型,同時自動檢測與修複復製品故障。客戶可以選擇複製參數來針對不同的威脅進行保護。Filecoin協議的雲存儲網路是一個安全的網路,因為內容在客戶端是端到端加密的,而存儲提供者並不能訪問到解密的秘鑰。Filecoin是運行在可以為任何數據提供存儲基礎設施的IPFS [1] 之上的激勵層。它對去中心化數據,構建及運行分散式應用程序,以及實現智能合約具有巨大的作用。

這些工作包括:

  1. 介紹Filecoin網路,概述這個協議以及詳細介紹幾個組件。
  2. 形式化去中心化存儲網路(DSN)的方案和屬性,然後將Filecoin構造為DSN。
  3. 介紹一種叫做複製證明的新型存儲證明方案,它將可以證明任何數據副本都存儲在實際的獨立存儲器中。
  4. 介紹一種新型的基於有序複製證明和存儲之上的有效工作共識,以作為功率的一種衡量方式。
  5. 形式化可驗證市場,並構建存儲市場和檢索市場,它們將分別管理如何從Filecoin寫入和讀取數據。
  6. 討論實例,與其他系統的連接,以及如何使用這個協議。

注意:Filecoin是一項正在進行中的工作。目前正在進行積極的研究,本文新的版本將出現在https://filecoin.io. 如有意見和建議,請發送電子郵件至research@filecoin.io.

目錄

1. 介紹 5

1.1. 基本組件 5

1.2. 協議概述 5

1.3. 論文組織 6

2. 去中心化存儲網路的定義 9

2.1. 故障容錯 9

2.2. 屬性 10

3. 複製證明和時空證明 11

3.1. 動機 11

3.2. 複製證明 11

3.3. 時空證明 12

3.4. PoRep和PoSt的實際應用 12

3.5. 在Filecoin中的運用 15

4. Filecoin:一個DSN架構 17

4.1. 設置 17

4.2. 數據結構 18

4.3. 協議 18

4.4. 保證和要求 23

5. Filecoin存儲和檢索市場 26

5.1. 可驗證市場 26

5.2. 存儲市場 26

5.3. 檢索市場 29

6. 有用的工作共識 32

6.1. 動機 32

6.2. Filecoin共識 32

7. 智能合約 36

7.1. Filecoin中的合約 36

7.2. 與其他系統的集成 36

8. 未來的工作 37

8.1. 正在進行的工作 37

8.2. 開放性問題 37

8.3. 證明和正式驗證 37

圖表清單

圖 1 Filecoin協議草圖 7

圖 2 Filecoin協議插圖 8

圖3 PoSt.Prove的基礎機製圖示 15

圖4 複製證明和時空證明的協議草圖 16

圖5 DSN方案中的數據結構 18

圖6 Filecoin DSN的執行示例 22

圖7 Filecoin DSN中Put和Get協議的描述 24

圖8 Filecoin DSN中Manage協議的描述 25

圖9 可驗證市場的通用協議 26

圖10 存儲市場和檢索市場的訂單數據結構 28

圖11 詳細的存儲市場協議 30

圖12 詳細的檢索市場協議 31

圖13 在期望共識協議中的領袖選舉 35

5.2.3存儲市場協議

簡而言之,存儲市場協議被分為兩個階段:訂單匹配和訂單結算。

訂單匹配:客戶和存儲礦工通過提交交易到區塊鏈來將他們的訂單提交到訂單簿中(第1步)。當訂單匹配完成,客戶將碎片發送給存儲礦工,隨後雙方簽署成交訂單並且將它提交到訂單簿(第2步)。

結算:存儲礦工封存他們的扇區(第3a步),為包含碎片的扇區生成存儲證明並且定期將它們提交到區塊鏈(第3b步);與此同時,其餘的網路必須驗證礦工所生成的證明並且修復可能的故障(第3c步)。

存儲市場協議細節請參閱圖11。

5.3檢索市場

檢索市場允許客戶請求檢索特定的碎片,並由檢索礦工提供這個服務。與存儲礦工不同,檢索礦工不需要在特定時間周期內存儲數據或者生成存儲證明。在網路中的任何用戶都可以成為檢索礦工,通過提供檢索服務來賺取Filecoin通證。檢索礦工可以直接從客戶那裡獲取碎片,也可以通過檢索市場獲取它們,或者作為存儲礦工直接存儲它們。

5.3.1要求

我們根據以下要求設計了檢索市場協議:

鏈下訂單簿:客戶必須能夠找到提供所需碎片的檢索礦工,並且在定價之後直接交易。這意味著訂單簿不能通過區塊鏈來運行,因為這將成為快速檢索請求的瓶頸,相反,參與者將只能看到訂單簿的一部分。因此,我們要求雙方廣播自己的訂單。

無信任方檢索:公平交換 [10] 的不可能性提醒我們要讓雙方在沒有信任方的情況下進行交易是不可能的。在存儲市場中,區塊鏈網路將作為一個驗證存儲礦工提供的存儲的(去中心化)信任方。在檢索市場中,檢索礦工和客戶將在沒有網路見證文件交易的前提下來進行數據交易。我們通過要求檢索礦工將數據分割成多個部分來解決這麼問題,並且對於發送給客戶的每個部分,礦工都會收到付款。這樣,如果客戶停止付款,或者礦工停止發送數據,任何一方都可以停止交易。值得注意的是,要想讓這個辦法管用,我們必須假設始終有一個誠實的檢索礦工。

支付通道:客戶希望在提交付款之後立即可以取回碎片,檢索礦工則希望只有在確認會收到付款之後才會提供碎片。通過公共賬本驗證付款可能是檢索請求的瓶頸,因此我們必須依賴於高效的鏈下付款。Filecoin區塊鏈必須支持可以進行快速並且樂觀的交易通道,並且僅在出現糾紛的情況下才使用區塊鏈。通過這種方式,檢索礦工和客戶可以快速發送我們協議要求的小額支付。包括創建支付通道網路在內的未來工作在前面的 [11] [12] 中可以見到。

Get訂單簿:檢索市場中的訂單簿是當前有效且開放的詢價、出價以及成交訂單的集合。不同於存儲市場,每一個用戶都會有不同的訂單簿視圖,因為訂單是在網路中廣播的,而每一個礦工和客戶只會跟蹤他們感興趣的訂單。

圖11 詳細的存儲市場協議

圖12 詳細的檢索市場協議

6.有用的工作共識

Filecoin DSN協議可以在任何允許Filecoin證明驗證的共識協議之上實現。在本章中,我們將介紹如何基於有用的工作來引導共識協議。代替掉浪費的工作證明計算,由工作的Filecoin礦工所生成的時空證明是允許他們參與共識的原因。

有用的工作:如果計算的輸出是對整個網路有價值的,而不僅僅是保衛區塊鏈的安全,我們便認為礦工在共識協議中所做的工作是有用的。

6.1.動機

確保區塊鏈的安全是至關重要的,工作證明方案常常需要解決其答案不可再用或者需要大量的浪費計算的難題。

不可重複利用的工作:大多數無許可權的區塊鏈要求礦工解決一個難以解決的計算難題,例如反轉哈希函數。通常這些難題的解決方案都是無用的,並且除了保護網路之外沒有任何固定的價值。我們能夠重新將這項工作重新用於有用的事情嗎?

嘗試重複使用的工作:業內已經有了數次嘗試再利用挖礦功率進行有用的計算。有些嘗試要求礦工同時與標準的工作證明進行一些特殊計算。其他的嘗試想用有用的問題取代工作證明,但依然很難解決。例如,Primecoin重新利用礦工的計算能力來尋找新的素數,以太坊要求礦工與工作證明一起執行小程序,Permacoin通過要求礦工反轉哈希函數同時證明某些數據正在存檔來提供存檔服務。儘管這些嘗試中的絕大多數都能執行有用的工作,但是這些計算中浪費的工作量仍然很普遍。

浪費的工作:解決難題在機器成本和能源成本方面的消耗是非常昂貴的,特別是如果這些謎題完全依賴於計算能力。當挖礦演算法令人尷尬地平行時,解決難題的普遍因素是計算能力。我們可以減少浪費的工作嗎?

嘗試減少浪費:理想情況下,網路資源的大部分應該花在有用工作上。一些嘗試是要求礦工使用更節能的解決方案。例如,Spacemint要求礦工用硬碟而不是算力來挖礦;雖然更加節能,但是這些硬碟空間依然被浪費了,因為它們被隨機數據填滿了。其他的嘗試會用基於權益證明的傳統拜占庭協議來代替解決難題的困難,其中利益相關方在下一個區塊中的投票數與它們在系統中所佔有的貨幣份額成正比。

我們著手設計了一個基於用戶數據存儲的有用的工作的共識協議。

6.2.Filecoin共識

我們提出了一種有用的工作共識協議,其中網路選擇一個礦工來創建新區塊(我們稱之為礦工的投票權)的概率與當前這個礦工使用中的存儲和網路其餘部分相關的存儲的關係成正比。我們設計了Filecoin協議,以便礦工寧願投資存儲而不是算力來並行挖掘計算。礦工提供存儲並重新使用計算以證明數據被存儲以參與共識。

公開:網路中當前正在使用的存儲總量是公開的。通過讀取區塊鏈,任何人都可以計算每個礦工的存儲任務,因此任何人都可以在任意時間點計算出每一個礦工的功率與網路總功率。

可公開驗證的:對於每一個存儲任務,礦工被要求生成時空證明以證明服務在被持續提供。通過讀取區塊鏈,任何人都可以驗證礦工所聲明的功率是否正確。

可變的:在任意時間點,礦工可以通過抵押新扇區並且填充新扇區的方式來添加新的存儲。這樣礦工便可以改變他們的功率。

功率計算的安全性來自於時空證明的安全性。在這個設定裡面,PoSt保證礦工無法對他們被分配的存儲量說謊。實際上,他們不能聲稱能夠存儲比當前存儲的數據更多的數據,因為這需要花時間來獲取並運行緩慢的PoSt.Setup,並且由於PoSt.Prove是一個順序計算,他們不能通過並行計算來更快地生成證明。

6.2.3使用功率達成共識

我們通過擴展現有的(和未來的)權益證明共識協議來預見實施Filecoin共識的多種策略,其中權益被指定的存儲所替換。但是我們預見了權益證明協議的改進,所以我們我們提出了一項基於我們之前的工作的架構,稱為預期共識 [14]。我們的策略是在每一輪選出一名(或多名)礦工,這樣贏得選舉的概率和每一個礦工所被分配的存儲成正比。

預期共識:預期共識EC的基礎在於在每個紀元確定地、不可預測地並且秘密地選舉一小部分領袖。我們的期望是每個紀元都只選出1個領袖,但一些紀元內可能會出現0個或者多個領袖。領袖通過創建一個區塊並將其傳播到網路的方式來拓展區塊鏈條。在每一個紀元,區塊鏈將被延伸一個或多個區塊。在沒有領袖的紀元里,一個空的區塊將被添加到區塊鏈中。雖然區塊鏈中的區塊可以線性排序,但它的數據結構是一個有向無環圖。EC是一個概率共識,每個紀元都比前面的區塊更加確定,最終因為不同歷史可能性很小的緣故達到足夠的確定性。如果絕大部分的參與者通過擴展鏈或簽名區塊的方式將他們的權重添加到區塊所屬的鏈上,那麼這個區塊就被確定了。

公平:由於簽名是確定的,並且和是固定的,每個參與者每次選舉都只有一次機會。假設 是一種安全的加密哈希函數,那麼 一定是一個從 均勻選擇的實數。因此,方程式為真的概率必須是/ ,這等於礦工在網路中功率的那部分。因為這個概率在功率上是線性的,所以這種可能性在分裂或彙集功率下得以保留。請注意,隨機值 在時間之前都是未知的。

保密:在給定數字簽名的假設情況下,一個沒有秘鑰 的有能力的攻擊者可以通過計算來獲取簽名的可能性是可以忽略不計的。

可公開驗證的:一個當選的領袖 可以通過展示、 和 來說服一個有效驗證者。鑒於前面的觀點,有能力的攻擊者在沒有獲勝秘鑰的情況下是不能生成證明的。

圖13 在期望共識協議中的領袖選舉

7.智能合約

7.1.Filecoin為終端用戶提供了兩個基本的原語:Get和Put。這些原語讓客戶可以在市場中以他們自己喜愛的價格存儲和檢索數據。雖然原語涵蓋了Filecoin的默認使用案例,但我們還是通過支持智能合約的部署,允許在Get和Put之上設計更複雜的操作。用戶可以編寫新的精細的存儲/檢索請求,我們將其稱為文件合約以及通用智能合約。我們整合了合約系統(基於 [18])和一個橋接系統將Filecoin存儲帶入其他區塊鏈之中,反之亦然,也將其他的區塊鏈的功能帶入Filecoin之中。

我們期望在Filecoin生態系統中存在大量的智能合約,我們也期待一個由智能合約開發者組成的社區。

7.2.Filecoin中的合約

智能合約使得Filecoin的用戶能夠編寫可以花費通證、在市場中請求存儲/檢索數據和驗證存儲證明的有狀態的程序。用戶可以通過將交易發送到賬本以觸發合約中的功能函數來與智能合約進行交互。我們拓展了智能合約系統以支持Filecoin的特定操作(如市場操作和證明驗證)。

FIlecoin支持特定於數據存儲的合同,以及更通用的智能合約:

文件合約:我們允許用戶對他們提供的存儲服務進行編程。有幾個例子值得一提:(1) 承包礦工:客戶可以提前指定提供服務的礦工而無需參與市場,(2) 支付策略:客戶可以針對礦工設計不同的獎勵策略,比如一個可以隨著時間的推移越付越高費用的合約,另一個合約則由一個值得信任的預報器來設定存儲價格,(3) 票務服務:合同允許礦工存入代表他們的用戶存入通證並且支付存儲/檢索服務, (4) 更複雜的操作:客戶可以創建允許數據更新的合約。

智能合約:用戶可以將程序與其他系統中的事物相關聯(如以太坊 [18]),這並不直接依賴於存儲的使用。我們預見了一些應用如:去中心化命名系統、資產追蹤和眾籌平台。

與其他系統的集成

橋接系統是連接不同區塊鏈的工具;雖然仍在進行中,但我們計劃支持跨鏈交互,以便將Filecoin存儲帶入其他基於區塊鏈的平台,並將其他平台的功能也帶入Filecoin。

Filecoin在其他平台上:其他的區塊鏈系統如比特幣 [19]、Zcash [20],特別是以太坊 [18] 和Tezos允許開發者編寫智能合約;然而這些平台只提供很少的存儲能力和非常高的成本。我們計劃提供一種橋接系統以將存儲和檢索支持帶入這些平台。我們注意到IPFS已經被一些智能合約(和協議通證)當做引用和分發內容的方式使用了。添加對Filecoin的支持將允許這些系統能夠以交易Filecoin通證的方式來保證IPFS上存儲的內容。

其他平台在Filecoin上:我們計劃提供橋接系統以鏈接FIlecoin和其他區塊鏈的服務。例如,與Zcash的集成將支持發送隱私存儲數據的請求。

8.未來的工作

這項工作為Filecoin網路的構建提供了一條清晰而有凝聚力的道路;然而,我們也認為這項工作是未來分散存儲系統研究的起點。在本章中,我們確定並填充了三類未來的工作。這包括已完成的工作,它們只是等待描述和發布、提出改進當前協議的開放式問題以及協議的形式化等方面。

8.1.正在進行的工作

以下主題代表正在進行的工作

一個描述每個區塊中Filecoin狀態樹的規範

Filecoin及其組件的詳細性能評估和基準

一個完全可實現的Filecoin協議規範

一個贊助檢索票務模型,其中通過發行每片可承載且可花費的通證,任何客戶C1都可以贊助另一個客戶C2的下載

一個分層共識協議,其中Filecoin子網可以在臨時或永久分區進行分區操作或繼續處理交易。

使用SNARK/STARK增加區塊鏈快照

基於以太坊的Filecoin介面合約和協議

與Braid的區塊鏈歸檔和跨區塊鏈蓋戳

僅在解決衝突的時候在區塊鏈上發布時空證明

正式證明Filecoin DSN和新型存儲證明的實現

8.2.開放性問題

這裡有許多未解決的問題,儘管他們不會耽誤上線時間,但其答案有可能大大改善整個網路。

一個描述複製證明密封功能更好的原語,其中理想情況下是O(n)解碼(而不是O(nm)解碼),並且無需SNARK/STARK就可以公開驗證

一個描述複製證明Prove功能更好的原語,其中無需SNARK/STARK就可以公開驗證且透明

一個可以公開驗證且透明的檢索證明或是其他的存儲證明

檢索市場中針對檢索的新策略(例如,基於概率支付、零知識條件支付)

一個更好的期望共識秘密領袖選舉,其中每一個紀元只有一個領袖當選

一個更好的SNARKs可信設置方案,允許公共參數的增量擴展(可以運行一系列MPCs的方案,其中每個額外的MPC嚴格降低故障概率,並且每個MPC的輸出可用於系統)

8.3.證明和正式驗證

由於證明和正式驗證的明確價值,我們計劃證明Filecoin網路的很多屬性,並在未來幾個月和幾年內開發正式驗證協議的規範。我們已經有了一些正在進行中的證明,還有更多的還在思考中。但是要證明Filecoin的很多屬性(如縮放和離線)將是艱難且長期的工作。

預期協議和變體的正確性證明

功率容錯的正確性證明,其中非同步1/2將不會導致分叉

在通用組合框架中制定Filecoin DSN,將Get、Put和Manage作為理想的功能來描述,並證明我們的確實現了它

自動自愈保證的正式模型和證明

正式地驗證協議描述(例如TLA+或者Verdi)

正式驗證實現(例如Verdi)

對Filecoin激勵的博弈論分析

致謝

這項工作是協議實驗室團隊中多個人的累計工作,如果沒有協議實驗室的合作者和顧問的幫助、評論和審查是不可能完成的。Juan Benet在2014年書寫的原始的Filecoin白皮書為這項工作奠定了基礎。他和Nicola Greco開發了新的協議並且與提供了有用的貢獻、評論、審查和交流的剩餘團隊成員合作寫完了這份白皮書。特別是,David「Davidad」Dalrymple提出了訂單簿範例和其他想法,Matt Zumwalt改進了白皮書的結構,Evan Miyazono創作了插圖並完成了論文,Jeromy Johnson在設計協議時提出了深刻見解,Steven Allen提出了富有洞察力的問題和說明。我們同樣也感謝所有的合作者和顧問們有用的交流;尤其是Andrew Miller和Eli Ben-Sasson。

上一個版本:QmZ5fLHwK9d55iyxpke6DJTWxsNR3PHgi6F43jSUgEKx31

參考文獻

在Manage協議依賴於區塊鏈的情況下,我們認為礦工即是審計人員,因為他們驗證並調節存儲供應商。 ↑

這個定義不保證每一個Get操作都能成功:如果每次Get操作最終都能取回數據,那麼這個方案就是公平的。 ↑

意味著是的前綴 ↑

存儲訂單會通過區塊鏈提交,見第5章。 ↑

這將是一個系統參數。 ↑

是一個系統參數。 ↑


推薦閱讀:

顛覆HTTP協議,IPFS可不是說大話
CentOS6.5部署storj實戰貼!
最有可能超過ETH市值的不是EOS而是IPFS
IPFS是如何挑戰網路協議霸主HTTP的?
Bluzelle和IPFS / Filecoin之間的不同

TAG:中文版 | 白皮書 | IPFS |