阿瓦隆2怎么玩

當前位置:主頁 > 房產 > 正文

什么是PoST時空證明算法

未知 2019-05-18 11:53

從十年前到今天,比特幣從一個白皮書的構想逐漸成為全球最大的點對點網絡支付系統之一。隨著比特幣的發展,區塊鏈技術也受到越來越多的關注。

其實,區塊鏈本質上就是一個分布式的應用軟件,而分布式系統首要問題就是解決一致性的問題,也就是要達成共識,所以說共識算法就是區塊鏈的「靈魂」。從BFT到PoW再到PoS,共識算法逐漸被被發明、改進和應用。今天在區塊鏈的核心領域——分布式存儲領域,Lambda團隊初步實現了該領域最為核心的算法,也就是PoST時空證明算法,并將該算法的核心類庫部分在GitHub上進行開源,開源協議遵守GPL V3。

數據完整性驗證機制

近些年,云計算得到廣泛的普及和應用,其核心理念就是資源租用、應用托管和服務外包,其通過虛擬化技術將分布的計算節點組成一個共享的虛擬化池,為用戶提供服務。但是當用戶選擇將大量應用和數據部署到云計算平臺中時,云計算系統也相應地變為云存儲系統,但高度集中的計算資源使云存儲面臨著嚴竣的安全挑戰,這也是中心化服務先天具備的弱點。

什么是PoST時空證明算法

此前我們在《騰訊云數據丟失事件思考:存儲的未來在哪里?》一文中也提到,中心化的云存儲在安全性、可靠性以及服務水平層面還存在很多問題亟待解決。企業數據放在云存儲中,他們最關心的是數據是否完整無誤,如果出現故障,是否可以實現數據的恢復,而且能夠證明這些數據與原來數據完全一致。這就是去中心存儲中經常提到的「數據完整性驗證機制」。

什么是PoST時空證明算法

數據完整性驗證機制根據是否對數據文件采用了容錯預處理分為數據持有性證明PDP機制(PDP,Provable Data Possession)和數據可恢復證明POR機制(POR,Proofs of Retrievability)。PDP機制能快速判斷遠程節點上數據是否損壞,更多的是注重效率,而POR機制不僅能識別數據是否已損壞, 且能恢復已損壞的數據。這兩種機制有著不同的應用需求,PDP機制主要用于檢測大數據文件的完整性,而POR機制則用于確保重要數據的完整性,以及數據丟失之后的可恢復性。

數據持有性證明PDP機制

首先我們可以看看PDP方案的一個應用場景:

(1)Alice要求Bob記憶一組信息;

(2)Alice本身并不會記下這組信息;

(3)Alice請Chris來確認Bob是否還記得這組信息;

(4)Chris并不了解這組信息的內容。

我們對這些角色進行代換:Alice即是用戶,Bob即為存儲曠工,Chris即為第三方審核者(以下簡稱TPA)。

驗證流程如下:

(1)用戶為待外包的每塊數據生成一個Tag,這個tag經由用戶進行簽名;

(2)TPA隨機對用戶外包數據中一塊發起Challenge,這個Challenge中包含有TPA生成的隨機數;

(3)存儲曠工根據被挑戰的數據塊內容、Tag信息、Challenge信息以及自己生成的一個隨機計算得到一個Proof;

(4)TPA以challenge、proof及用戶公鑰為參數,通過映射函數e(u,v)雙線性性質檢驗存儲曠工是否持有數據。

PDP的核心公式為:

什么是PoST時空證明算法

時空證明:Proof of Space Time

PoST,全稱是Proof of Space TIme,是由FileCoin引入到區塊鏈領域的概念,「時空」的定義是衡量并計算存儲在網絡中的數據存儲時間及空間。 FileCoin和Lambda都是旨在提供去中心化的分布式存儲,礦工通過存儲及檢索過程獲得客戶的付費,并通過時空證明算法獲得出塊獎勵。由于整個網絡是沒有中心化節點的P2P網絡,因此需要某種機制保證用戶所存儲數據的完整性和可恢復性,因此誕生了這個領域的一些相關算法。

時空證明PoST,它可以讓驗證者檢查存儲提供商是否在一段時間內存儲了他/她的外包數據。這對提供商的直接要求是:

(1)生成順序的存儲證明來作為確定時間的一種方法。

(2)組成遞歸執行來生成簡單的證明。

其實,PoST算法是對POR的一種改進,POR算法是由Juels等人在一篇名叫《Proofs of Retrievability For Large Files》的論文中最早進行闡述,其核心是將文件分片存儲,并根據分片的標簽信息定期進行挑戰和證明。但通常學術界所定義的POR的運行依賴于中心化第三方節點,并且每次運行都要進行預處理,相對的SpaceTIme(PoST)是一定時期內產生一個POR序列來證明有用存儲的保持時間。

如下圖所示,PoST與PoR的主要區別在于重復挑戰的執行,而不重新運行初始化階段,這就大大提高了執行效率。

什么是PoST時空證明算法

關于 IPFS和 FileCoin

現在,區塊鏈領域的很多人混淆了IPFS和FileCoin項目,以為IPFS項目已經解決了存儲數據的完整性問題,這是一個誤區。這些人錯誤的認為,IPFS對數據進行哈希之后,是可以保證數據的不可篡改的,這是一個錯誤的認識,對于任意IPFS網絡的節點來說,它們僅僅會存儲自己感興趣的數據,而不是用戶指定的數據。因此,需要一個激勵和檢查層來確保用戶指定數據的存儲和不被篡改。做一個簡單的比較,IPFS是類似于開源的Ceph軟件,FileCoin和Lambda則更類似于AWS的S3。沒有數字貨幣激勵的單純存儲系統,是不可能解決數據的持有性問題的。

什么是PoST時空證明算法

FileCoin關于時空證明PoST的定義為:

· 時空證明PoST方案使得有效的證明人P 能夠說服一個驗證者V 相信 P 在一段時間內已經存儲了一些數據 D。PoSt其特征是多項式時間算法的元組: (Setup, Prove, Verify)。

· PoSt.Setup(1λ,D)-》Sp,Sv,其中SP 和 SV 是P 和V 的特點方案的設置變量,λ 是一個安全參數。PoSt.Setup用來給予 P 和V 必要的信息來運行PoSt.Prove和 PoSt.Prove。一些方案可能要求證明人或者是有互動的第三方去運算PoSt.Setup。

· PoSt.Prove(Sp , D, c, t) → πc,其中c 是驗證人V 發出的隨機驗證, πc 是證明人在一段時間內可以訪問數據D 的的證明。PoSt.Prove由P(證明人)為V(驗證者)運行生成 πc。

· PoSt.Verify(Sv, c, t,πc)→ {0,1},用來檢測證明proof是否是正確。PoSt.Verify 由V運行和說服V 相信 P 在一段時間內已經存儲了R。

從邏輯上來講,數據的持有性證明是一種由兩個角色和四個步驟完成的游戲。第一個角色是Challenger,第二個角色是完成Proof的人,Challenger的第一步把文件和一些謎題生成之后,放到Server上;第二步生成某個Challenger的信息,需要的某些數據;第三步存儲節點完成了某個Proof,發回給Challenger;第四步就是Challenger用自己原來遺留的一些信息,生成一個Verify,用Verify跟Proof去驗證這東西是不是對的;這就是用兩個角色、四個步驟完成驗證。

去中心化存儲項目需要解決的問題非常多,但是我們需要避免項目周期過長和設定過于龐大的目標。在軟件領域,有一本著名的書叫做《人月神話》,講述了一個著名的軟件項目失敗的過程。事實上,任何設計目標過于宏大的軟件都難逃失敗的命運,而正確的開發方式則應該是通過敏捷和迭代來進行完成。

FileCoin作為一個歷史悠久的項目,其白皮書所采用的技術方案多次更改,核心共識算法PoST v1從最早的類PoW共識,到2017完全推翻V1的設計,改用類似于Algorand的VRF算法,到加入Poreps的VDE實現,到引入新的VDF算法,并且檢索市場、小額支付等問題也尚未有完善的設計方案,FileCoin涉獵了太多的技術及學術難題,使得開發周期變得非常不可控。

Lambda的解決方案

而Lambda的思路是,盡可能通過原型系統去迭代實現一個基于區塊鏈的PDP和POR系統,并實現PoST的所有優點,比如連續挑戰和鏈上隨機挑戰。Lambda認為,在非BlockChain情況下,在另外一種和POR不一樣驗證算法中,可以構造一個PDP算法,假設一個可信第三方,通過一定的概率,對于數據的持有性進行驗證,并且把驗證結果以顯式不可篡改的方式來存儲。那么這個可信的第三方的審計,也就是所謂的TPA,一定可以把驗證結果通過上鏈來實現不可篡改,并且一個單點可信的驗證過程,也一定可以通過一組半可信Validator節點共識來完成。

而對于Validator節點和角色的使用,是Lambda不同于FileCoin的主要特點,也因此讓Lambda項目的開發難度得以降低。今天,Lambda開放的使用Validator節點的PoST實現,給分布式存儲和區塊鏈存儲領域提供了新的思路和研究方向。

標簽
阿瓦隆2怎么玩