Filecoin-入門基礎概念

一、什麼是Filecoin

官網:https://docs.filecoin.io/
https://filecoin.io/zh-cn/
技術白皮書:https://filecoin.io/filecoin.pdf

IPFS是一個去中心化存儲網絡,Filecoin是IPFS存儲的激勵層,Filecoin作爲生態激勵來保證 IPFS 節點的運行。

FIL 是 Filecoin 項目基於 Filecoin 公鏈發行的 Token,全稱是:Filecoin ,符號是:FIL。

Filecoin項目主要組成部分
1、去中心化存儲網絡DSN
2、複製證明PoRep
3、構建兩個可驗證市場,即存儲市場和檢索市場

1. Filecoin測試網

測試網 官方文檔 https://docs.lotu.sh/
Filecoin區塊瀏覽器,查看鏈上消息和爆塊消息等消息
區塊瀏覽器 https://filscan.io/#/

2. Filecoin測試網怎麼參與?

Filecoin測試網是公開開放的,任何人只要有硬件有軟件基礎都可以參與。

關於硬件:測試網第一階段的時候,官網移除了1GB扇區的測試,目前僅支持32GB扇區,爲了加速零知識證明,需要額外配置GPU,最低是N卡1060,內存最低128G,如此高的配置無疑阻擋了衆多的礦機參與,市場上大多數礦機都處於不能挖礦狀態,用家用電腦的願望也會落空,但是我們不排除官方最後的優化方案會降低需求。

二、Filecoin實現方案

Filecoin測試網目前在一個Filecoin實現方案lotus(https://github.com/filecoin-project/lotus/)上運行,網絡本身與具體的實施方案無關。

在接下來的幾個月中,包括go-filecoin在內的幾個(目前已經有四套lotus、go-filecoin、forest以及fuhon 其中Forest(由ChainSafe在Rust中實現)和fuhon(由Soramitsu在C ++中實現))實施方案,將能夠在Filecoin測試網上進行互操作。而目前我們測試網都是基於lotus實現,官方爲什麼實現四套實施方案,主要基於安全考慮(考慮到項目的難度、進度和可控性,具有可在同一網絡上互操作的多個軟件實現,可以降低一個實現中的重大錯誤擡高頭並破壞整個網絡的風險。)

您可以在GitHub上的各個實現中跟蹤每個實現的進度:

  • go-filecoin(用Go編寫)
  • lotus(用Go語言編寫)
  • fuhon(用C ++編寫)
  • forest(用Rust編寫)

說明:Filecoin協議尚未100%穩定和完成,因此測試網並非是穩定的網絡。測試網的目的是讓我們發現並且修復bug,測試網啓動至今已經被多次攻擊,比如內存溢出漏洞、空指針攻擊等方式,官方也在根據線上的問題,快速修正問題。測試網網絡已經多次被重置。

三、核心原理

Filecoin – Lotus存儲證明了什麼?
參考URL: https://www.lianyi.com/zixun/2201284
【協議學院】Filecoin 存儲封印和證明初步解析
參考URL: https://www.jianshu.com/p/5a6febf1578b

Lotus/Filecoin項目由三部分組成:
1/ Lotus Blockchain部分 – 實現區塊鏈相關邏輯(共識算法,P2P,區塊管理,虛擬機等等)。注意的是,Lotus的區塊鏈相關的數據存儲在IPFS之上。go語言實現。
2/ RUST-FIL-PROOF部分 – 實現Sector的存儲以及證明電路。也就是FPS(Filecoin Proving Subsystem)。Rust語言實現。
3/ Bellman部分 – 零知識證明(zk-SNARK)的證明系統,主要是基於BLS12_381橢圓曲線上,實現了Groth16的零知識證明系統。Lotus官方推薦採用Nvidia的2080ti顯卡,也主要做這部分的性能加速。Rust語言實現。

Filecoin的存儲封印(Sealing)和證明(PoRep & PoSt)是用rust語言編寫,而且是單獨成篇的,也就是說可以單獨拿出來玩。

ilecoin複製遊戲程序的源碼可以到以下地址下載:
https://github.com/filecoin-project/replication-game

如果你不想下載源碼,直接下載可執行代碼的話,直接到這裏:
https://github.com/filecoin-project/rust-fil-proofs/releases

1. 複製證明(Proof of Replication)

深度剖析複製證明論文
參考URL: https://blog.csdn.net/ipfs_newb/article/details/81318534
科普 | 如何理解Filecoin的複製證明和時空證明?
參考URL: https://www.jinse.com/blockchain/414056.html

複製證明(PoRep)是一種新型的存儲證明方案,它能夠讓存儲礦工說服用戶和其他礦工,數據已經被複制到了它的礦機上。這種方案能有效的阻止女巫攻擊、外包攻擊和生成攻擊的存儲作弊問題,以下是複製證明的簡化步驟:

在Filecoin協議中,存儲供應商要讓他們的客戶相信,客戶所付費的數據已經被他們存儲,**存儲供應商通過生成“複製證明”(PoRep)和“時空證明”(PoST)給區塊鏈網絡或者客戶來驗證存儲的真實性。**而我們說的複製證明和時空證明就是來實現這一驗證功能的基礎算法。

複製證明(PoRep),證明數據的一個單獨的拷貝已經在一個特定的扇區內創建成功。複製證明由封印(Seal)操作完成,封印操作創建一份數據的拷貝,併產生相應的複製證明。 這是一種新型的存儲證明方案,它能夠讓存儲礦工說服用戶和其他礦工,表明數據已經被複制到了它的礦機上。

複製證明也是一種交互式協議。當證明人P:(a)承諾存儲某數據D的n個不同的副本(獨立物理副本),然後(b)通過響應協議來說服驗證者V,表明P確實已經存儲了每個副本,這是複製證明的簡化步驟。

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

  • 女巫攻擊(Sybil Attack):
    利用n個身份,承諾存儲n份數據D,而實際上存儲小於n份(比如1份),但是卻提供了n份存儲證明,攻擊成功。

  • 外部數據源攻擊(Outsourcing Attack):
    當攻擊者礦工收到檢驗者要求提供數據D的證明的時候,攻擊者礦工從別的礦工那裏生成證明,證明自己一直存儲了數據D,而實際上沒有存儲,攻擊成功。

  • 生成攻擊(Generation Attack):
    攻擊者A可以使用某種方式生成數據D,當檢驗者驗證的時候,攻擊者A就可以重新生成數據D來完成存儲證明,攻擊成功。

2. 時空證明

Filecoin測試網12日凌晨上線,星際大陸帶你回顧什麼是時空證明
參考URL: https://baijiahao.baidu.com/s?id=1652695987787883881&wfr=spider&for=pc
Filecoin挖礦:什麼是時空證明?
參考URL: https://baijiahao.baidu.com/s?id=1657844007685602759&wfr=spider&for=pc

我們如何證明數據在一段時間內都一直被存儲?爲了解決這個問題,filecoin介紹了新的證明,時空證明(proof-of-spacetime,post),時空證明提出了證明鏈的數據結構,證明鏈由挑戰(challenge)和證明(proof)鏈接起來形成,在證明鏈的基礎上添加上時間段,這樣就得到了一段時間內的礦工存儲數據的證明,這就是時空證明(Proof of Spacetime,PoSt),

PoST即Proof of Spacetime,時空證明,這一操作是爲了證明存儲節點在一定時間段內存儲了相應文件,而PoST證明的生成涉及較大計算量,GPU的PoST計算速度要快於CPU,因此,引入GPU挖礦可以確保在規定時間內完成PoST證明。之所以要求礦工在一個區塊週期內完成PoST計算則是爲了增加攻擊者的攻擊成本,因爲PoST的計算量較大。

這也就是官方所說的“GPU只是對CPU的一種補充”的意思。開發團隊成員Why曾解釋過:“如果能找到別的方法來實現快速計算,就不需要GPU。”

時空證明可以理解爲持續的複製證明,即礦工必須不斷的生成證明,並在一個提交週期內提交存儲證明,如果存儲服務商沒有在提交週期內連續及時提交證明,會被系統扣除部分代幣。

僅當礦工在給定時期內因贏得大塊獎勵而贏得了選舉票時,纔在選舉時空(“ ElectionPoSt”)中運行SNARK 。每當礦工贏得選舉票時,配置就使用GPU的功能來計算PoSt SNARK的輸出結果,準確計算出每個紀元週期(約20秒)內的PoSt SNARK。PoSt所需的GPU功能在很大程度上取決於礦工在任何給定時期擁有多少張獲勝選舉票,這與他們在網絡中的存儲比例有關。

官方還建議使用較低延遲的網絡連接來按時提交PoSt。如果礦工多次未能按時提交PoSt,則可能導致贏得較少的區塊獎勵,並增加被削減的風險。

3. 零知識證明

零知識證明 - zkSNARK入門
參考URL: https://www.jianshu.com/p/828fef53cf13
Filecoin – Lotus存儲證明了什麼?
參考URL: https://www.lianyi.com/zixun/2201284

零知識證明,zkSNARK,zero-knowledge Succint Non-interactive ARguments of Knowledge的簡稱

零知識證明(Zero-Knowledge Proof)或零知識協議是一種基於概率的驗證方法,包括兩部分:宣稱某一命題爲真的證明者(prover)和確認該命題確實爲真的驗證者(verifier)。

零知識證明指的是證明者能夠在不向驗證者提供任何有用的信息的情況下,使驗證者相信某個論斷是正確的,在密碼學中非常有用。

顧名思義,零知識證明就是既能充分證明自己是某種權益的合法擁有者,又不把有關的信息泄漏出去,即給外界的 “知識” 爲“零”。

“能夠在不知道用戶是誰,或者他們有多少錢的情況下判斷‘一個用戶是否有足夠的錢發送給另一個用戶’的問題,是零知識證明在區塊鏈中的主要應用之一。”——Demiro Massessi

例如,當前網站將用戶密碼的哈希值存儲在其 web 服務器中。爲了驗證客戶端是否真的知道密碼,大多數網站目前使用的方法是對客戶端輸入的密碼進行哈希值計算,並將其與存儲的結果進行比較。

零知識證明可以保護用戶的帳號信息不被泄露。如果零知識證明可以實現,那麼在客戶的密碼是未知的情況下,仍然可以在客戶端登錄進行身份驗證。當服務器受到攻擊時,用戶的帳戶仍然是安全的,因爲客戶的密碼沒有存儲在 web 服務器中。

零知識證明在區塊鏈中的應用
比特幣和以太坊網絡都使用公共地址來代替驗證者和證明者的真實身份,使得交易部分匿名; 只有發送和接收地址,以及交易數量是公衆知道的。但是,通過區塊鏈上提供的各種信息,如交互記錄等,可以發現地址的真實身份,存在隱私暴露的隱患。

用了零知識證明之後,發送方、接收方和第三方的細節信息可以保持匿名,同時保證交易有效。

最早使用零知識證明技巧的區塊鏈叫做 Zcash,實際的作法叫做 Zk-Snarks,這是許多零知識證明的做法之一,也是最有名的一個。

Zk-Snarks 是 “零知識簡潔無交互知識認證” 的簡稱,是一種在無需泄露數據本身情況下證明某些數據運算的一種零知識證明。

Zk-Snarks 技術縮減了證明所需的時間和驗證它們所需的計算量。它能夠證明有效交易的條件已經滿足,而不需要透露交易所涉及的地址或交易量的任何關鍵信息。

Zcash 可以將交易紀錄上的匯款者、收款者和金額都經過加密隱藏起來,因此礦工無從得知這些交易上的細節,但仍然可以驗證交易。不過,目前多數使用者在 Zcash 上的交易,還是選擇未經加密的作法,因爲花費的成本比較高。

根據 Zk-Snarks 白皮書,Zk-Snarks 是第一個不依賴任何信任設置實現區塊鏈驗證的系統,而隨着計算數據數量的增加,計算速度呈指數增長。它不依賴於公鑰加密系統,而且更簡單的假設使它在理論上更安全,因爲它唯一的加密假設是哈希函數 (如 SHA2) 是不可預測的。零知識證明和 Zk-S(T|N)ARK 等技術的測試和採用需要時間。

四、參考

公測在即,Filecoin團隊爲什麼要修改挖礦模式?
參考URL: https://baijiahao.baidu.com/s?id=1652497303135452101&wfr=spider&for=pc
一文讀懂Filecoin,想暴富看這裏
參考URL: https://www.jianshu.com/p/451d23ef1285
Filecoin又發佈了兩個實現,網絡將更加安全!
參考URL: https://news.huoxing24.com/20200203161057140491.html
Filecoin邏輯梳理及源代碼導讀
參考URL: https://blog.csdn.net/weixin_34354173/article/details/92672743
【協議學院】Filecoin 存儲封印和證明初步解析
參考URL: https://www.jianshu.com/p/5a6febf1578b

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章