當前位置:
首頁 > 最新 > IPFS&FileCoin-PoRep和PoSt演算法

IPFS&FileCoin-PoRep和PoSt演算法

區塊鏈在2017年爆發,很多項目都在用去中心化的思路去重塑。存儲是很多人想去重塑的一個方向,用去中心化的存儲代替中心化的存儲。2015年,IPFS設計提出了一個點對點的分散式媒體發布協議。IPFS被認為是最有可能取代HTTP的新一代互聯網協議。FileCoin在IPFS協議基礎上,設計自己的區塊鏈,激勵更多的存儲服務以及用戶參與IPFS協議。

IPFS以及FileCoin的白皮書相對來說,知識量很大,讀懂需要花一點時間。我總結一下FileCoin中設計的PoRep以及PoSt演算法的原理,方便理解。

1)PoRep演算法

PoRep 演算法是用來證明一個存儲系統確實存儲了某一份數據的拷貝,而且每一份拷貝使用不同的物理存儲。

PoRep 需要抵抗的三種攻擊:

1) 女巫攻擊(多份數據使用同一物理存儲)

2) 外包攻擊(用其他存儲,而不是自己的存儲進行數據存儲)

3) 生成攻擊(及時生成檢驗數據)

*) 解決女巫攻擊的方法是數據編碼,引入混淆因子:

RDek = Encode(D, ek)

RDek 是編碼後的數據,D 是原數據,ek是混淆因子。

*)解決外包攻擊或者生成攻擊的方法是:Encode 的時間要足夠長

(a) T honest = RTTVPV + Time(PoRep.Prove(SP, RD ek, c))

(b) T attack = RTTVPV + Time(PoRep.Prove(SP, Encode(D, ek), c))

保證 T Encode = 10 × T honest or 100 × T honest。也就是攻擊者需要花10倍,甚至百倍的時間進行編碼,從而可以區分出攻擊者和誠實的礦工。

Encode 的方法必須具備以下幾個特徵:

1) 足夠慢,保證 T honest

2) 可以 Decode

3) 必須有混淆因子

4) 輸出不能壓縮

5) Decode 足夠快

6) Encode 的速度可調

7) Encode 的結果,所有人都能驗證

8) Encode 必須和數據中的所有 bit 相關

9) …

Filecoin 選擇的 Encode( Seal)的方法是多輪的 AES-256的CBC加密。

數據編碼以及驗證過程的幾個小概念:

1) 散列函數: CRH 以及 MerkleCRH(把一段數據切成一段段的,組成一個 Merkle 樹,針對每個節點,算 CRH,輸出是根上的 CRH)

2) zk-SNARKs: 零知識驗證演算法,在生成和驗證數據之前,需要生成一對生成/驗證密鑰。

整個PoRep的生成以及驗證的計算過程如下圖所示:

值得強調的是,最終存儲在硬碟的是Seal之後的數據,也就是AES的加密結果。

整個過程中有幾種計算:

1) 散列 CRH 以及 MerkleCRH

2) 零知識 Prove 以及 Verify

3) Seal ( AES-256 CBC)

具體的計算公式可以查看FileCoin的白皮書第15 頁。

2)PoSt演算法

PoSt演算法是在 PoRep演算法的基礎上,循環做一定次數的 PoRep 的證明。因為整個循環計算需要一定的時間,從而證明數據確實在物理存儲上存儲了一定的時間。 這也就是 Proof-of-SpaceTime 的由來。

可以參看白皮書上的圖來理解:

整個計算會重複PoRep計算t次。每次PoRep的計算結果,會作為輸入再次計算新的PoRep結果。最後一次PoRep的計算結果,作為PoSt的結果。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

法國不是大家想像的那樣的!

TAG:全球大搜羅 |