【董天一】IPFSFilecoin和複製證明

圓方圓區塊鏈發表於2018-11-21

作者簡介:董天一 ,IPFS/Filecoin中國區技術佈道人 ,《IPFS指南》作者。

畢業於北京大學軟體與微電子學院曾擔任甲骨文亞洲研發中心(中國)資料庫開發工程師。

資深區塊鏈技術開發者,現致力於IPFS/Filecoin在中國的技術推廣IPFS的競爭對手。

這篇文章主要來講一下Filecoin協議裡面的複製證明(Proof of Replication),由於協議涉及到很多概念,可能看起來有點暈乎乎的,小編儘量把複雜問題簡單化 ,力求給大家做大普及IPFS知識。

![pic1]()

概念:

  • 挑戰(challenge):系統對礦工發起提問,可能是一個問題或者一系列問題,礦工正確的答覆,則挑戰成功,否則失敗
  • 證明者(prover):礦工向Filecoin系統提供有效的證明,來完成挑戰(challenge)
  • 檢驗者(verifier):系統代表使用者向礦工發起挑戰(challenge),來檢測是否礦工完成了資料儲存任務
  • 資料(data):使用者向礦工提交的需要儲存或者礦工已經儲存的資料
  • 證明(proof):礦工完成挑戰(challenge)時候的回答

流程:系統(verifier)向礦工(prover)發起挑(challenge),礦工答覆證明(proof),系統檢驗礦工的答覆以判斷礦工是否通過本次挑戰(challenge)。

Filecoin涉及到的證明概念:

  • 資料持有性證明(Provable Data Possession ,PDP):使用者傳送資料給礦工進行儲存,礦工證明資料已經被自己儲存,使用者可以重複檢查礦工是否還在儲存自己的資料
  • 可檢索證明(Proof-of-Retrievability,PoRet):和PDP過程比較類似,證明礦工儲存的資料是可以用來查詢的
  • 儲存證明(Proof-of-Storage ,PoS):利用儲存空間進行的證明。工作量證明的一種,Filecoin上一篇論文使用了這個名字,新的論文則升級為PoRep
  • 複製證明(Proof-of-Replication,PoRep):新的 PoS(Proof-of-Storage),PoRep可以保證每份資料的儲存都是獨立的,可以防止女巫攻擊,外源攻擊和生成攻擊
  • 工作量證明(Proof-of-Work,PoW):證明者向檢驗者證明自己花費了一定的資源,PoW被用在加密貨幣,拜占庭共識和其他各種區塊鏈系統。BTC使用的就是這種型別的證明,依賴巨量的雜湊計算和能源消耗來建立共識和保證btc網路的安全性
  • 空間證明(Proof-of-Space,PoSpace):Filecoin提出的概念,儲存量的證明,PoSpace是PoW的一種,不同的是PoW使用的計算資源,而PoSpace使用的是儲存資源
  • 時空證明(Proof-of-Spacetime,PoSt):時空證明,礦工證明自己花費了spacetime資源, 即:一定時間內的儲存空間的使用,PoSt是基於PoReps實現的
  • 複製證明(Proof of Replication,PoRep):PoRep 是PoS的進化版:用來證明 資料(data)已經被礦工儲存

為什麼要搞這麼複雜?

區塊鏈裡面任何精巧的系統都需要精心設計(比如BTC),讓系統能夠自己一直執行下去,搞這麼複雜目的不外乎下面兩個:

  • 保證礦工能夠老老實實的幫助使用者儲存資料
  • 公平的分配代幣

複製證明:Proofs-of-Replication

PoRep必須能夠防範以下三種常見的攻擊方式:女巫攻擊,外源攻擊和生成攻擊,他們的共同特點是攻擊礦工實際儲存的資料大小要比聲稱儲存的資料小,這樣攻擊礦工就能獲得本不該他獲得的報酬。

  • 女巫攻擊(Sybil Attack):利用n個身份,承諾儲存n份資料D,而實際上儲存小於n份(比如1份),但是卻提供了n份儲存證明,攻擊成功
  • 外部資料來源攻擊(Outsourcing Attack):當攻擊者礦工收到檢驗者要求提供資料D的證明的時候,攻擊者礦工從別的礦工那裡生成證明,證明自己一直儲存了資料D,而實際上沒有儲存,攻擊成功
  • 生成攻擊(Generation Attack):攻擊者A可以使用某種方式生成資料D,當檢驗者驗證的時候,攻擊者A就可以重新生成資料D來完成儲存證明,攻擊成功

防範生成攻擊比較困難,所有的PoS協議都會遇到這樣的問題,如何保證礦工真正的儲存了這些資料,目前這還是個待解決的問題,PoRep需要解決這個問題,Filecoin協議採用一種叫做 RepGame 的遊戲來一起解決這三種攻擊方式,PoRes還在此基礎上引入了時限性(Time Bounded),PoRes協議的實現可能有很多種方式,不管哪種實現方式都必須能夠防止上面的三中攻擊方式,並且要能夠通過RepGame遊戲的測試。

時空證明:Proofs-of-Spacetime

時空證明提出了證明鏈(proof-chain)的資料結構,證明鏈把一些的提問(challenge)和證明(proof)連結起來形成。在證明鏈的基礎上新增上時間段,這樣就得到了一段時間內的礦工儲存資料的證明,這就是時空證明(Proof of Spacetime,PoSt),PoSt可以證明在該段時間內礦工儲存了特定的資料,並且利用時間戳錨定這些證明鏈,這樣即使驗證者(verifier)不線上,也能夠在將來去驗證礦工在該段時間內生成了證明鏈,PoSt會被提交到鏈上用來產生新的Block。

PS: time-bounded Proof-of-Replication 和 Proofs-of-Spacetime的可實現結構目前Filecoin團隊還沒有給出來具體的細節,期待Filecoin下一篇論文。


相關文章和視訊推薦

[【董天一】關於IPFS的熱門問題]()

圓方圓學院彙集大批區塊鏈名師,打造精品的區塊鏈技術課程。在各大平臺都長期有優質免費公開課,歡迎報名收看。

公開課地址:https://ke.qq.com/course/345101

相關文章