本文作者:楊尉鞍泉;原創(chuàng)作品太惠,轉(zhuǎn)載請注明出處
[上一篇鏈接] filecoin技術(shù)架構(gòu)分析之一:1 filecoin概念
[下一篇鏈接] filecoin技術(shù)架構(gòu)分析之三:3 filecoin開發(fā)網(wǎng)絡(luò)使用
目錄
- 2 filecoin通用語言理解
- 2.1 為什么要把filecoin通用語言單獨列為一講
- 2.2 存儲證明
- 2.2.1 為什么使用存儲證明
- 2.2.2 復(fù)制證明
- 2.2.3 時空證明
- 2.3 預(yù)期共識
- 2.3.1 基礎(chǔ)前提
- 2.3.2 使用power達成共識
- 2.3.3 選舉方案
- 2.4 filecoin智能合約
- 2.4.1 文件合約
- 2.4.2 智能合約
- 2.4.3 與其他系統(tǒng)的兼容
- 2.5 交易市場
- 2.4.1 存儲市場
- 2.4.2 檢索市場
- 2.6 filecoin節(jié)點
2.1 為什么要把filecoin通用語言單獨列為一講
- 筆者認為一位優(yōu)秀的軟件從業(yè)人員,必須具備兩種必備能力
- 架構(gòu)設(shè)計能力
- 架構(gòu)剖析能力
這兩者是相輔相成的,架構(gòu)設(shè)計師所設(shè)計之架構(gòu)不可能超過自己的認知范疇岩睁,故架構(gòu)設(shè)計師必須有效高效地拓展自己的技術(shù)認知視圖藕筋,以適應(yīng)當(dāng)代軟件架構(gòu)高速發(fā)展的現(xiàn)實翅雏。而拓展的途徑,一方面就是相關(guān)理論體系的快速學(xué)習(xí)跟進人芽;另一方面望几,就是實戰(zhàn),對有顯著價值的優(yōu)秀軟件項目進行架構(gòu)剖析萤厅。有理論橄抹、有實戰(zhàn)方是王道靴迫。理解具體架構(gòu)的通用語言就是分析他人架構(gòu)設(shè)計思維的一條捷徑。
- 理解具體技術(shù)架構(gòu)的通用語言是分析架構(gòu)的一條捷徑
- 通用語言是架構(gòu)設(shè)計人員為實現(xiàn)某個具體技術(shù)架構(gòu)楼誓,所高度抽象出來的名詞或者稱謂玉锌,通過理解通用語言,可以快速理解架構(gòu)設(shè)計人員的思維和設(shè)計目的疟羹。
- 與讀書方法類似(薄讀->厚讀>再薄讀)主守,理解通用語言就是第一次的薄讀過程,非常重要榄融。
-
對業(yè)務(wù)的理解是非常有必要的参淫,所以在第一講中,筆者鋪墊了filecoin的一些基本概念愧杯,任何架構(gòu)的設(shè)計不能脫離業(yè)務(wù)而行涎才,業(yè)務(wù)驅(qū)動開發(fā)仍是非常實用的架構(gòu)模式;filecoin 技術(shù)架構(gòu)從業(yè)務(wù)來劃分力九,可劃分為兩個大的范疇耍铜。
- 分布式存儲解決方案
- 存儲礦工
- 檢索礦工
- 存儲客戶端
- 檢索客戶端
- 區(qū)塊鏈項目
- filecoin公鏈
- filecoin actors 智能合約
- 分布式存儲解決方案
filecoin核心通用業(yè)務(wù)組件
組件名稱 | 目的 |
---|---|
DSN | 保障數(shù)據(jù)安全、包括故障容錯跌前、數(shù)據(jù)完整性棕兼、數(shù)據(jù)可恢復(fù)等 |
新型存儲證明 | 證明礦工按照協(xié)議規(guī)范存儲了客戶指定的數(shù)據(jù),數(shù)據(jù)有效性 |
可驗證市場 | 對礦工與客戶組成的交易市場進行了建模舒萎,保證交易的有效性 |
有效工作量證明 | 出塊的共識機制程储,很重要,做到激勵兼容 |
下面各節(jié)將會對filecoin技術(shù)架構(gòu)中的核心通用語言進行解釋臂寝。
2.2 存儲證明
Proof-of-Storage包含復(fù)制證明(PoR)和時空證明(PoSt)章鲤,其作用主要有兩點:
證明礦工做了有效存儲
競爭區(qū)塊打包出塊,獲取區(qū)塊獎勵
2.2.1 為什么使用存儲證明
-
相對于PoW(Proof-of-Work)或者PoC
- PoW耗能嚴(yán)重咆贬;PoC以空間換時間败徊,同樣存在耗能嚴(yán)重問題
- 而filecoin網(wǎng)絡(luò)的耗能必須遠低于類似比特幣的PoW,參見第一講filecoin的對標(biāo)對象掏缎,filecoin必須實現(xiàn)以更低的成對去應(yīng)對商業(yè)競爭皱蹦,同時提供相同級別的安全性,以及文件存儲的效用
- 存儲證明需要做要與實體經(jīng)濟掛鉤眷蜈,減少無謂浪費
-
相對于PoS(Proof-of-Stake)
- Proof-of-Storage在定向領(lǐng)域(分布式存儲)以更簡單方式沪哺,協(xié)調(diào)激勵,并驅(qū)使礦工以有競爭力的價格提供真實的新存儲酌儒,它促使礦工積極保證filecoin網(wǎng)絡(luò)的效用
- 當(dāng)然Proof-of-Stake是區(qū)塊鏈領(lǐng)域的熱點研究問題
Proof-of-Storage阻止網(wǎng)絡(luò)攻擊
攻擊類型 | 說明 | 阻止攻擊原理 |
---|---|---|
女巫攻擊Sybil attack | 作惡節(jié)點創(chuàng)造多個女巫身份辜妓,謊稱存儲了多個副本 | 每個節(jié)點的副本都是有簽名的,想通過復(fù)制證明,就相當(dāng)于真實做了有效存儲 |
外包攻擊outsourcing attacks | 作惡節(jié)點快速從其他節(jié)點獲取內(nèi)容籍滴,謊稱他們存儲了比他們實際存儲更多的內(nèi)容 | 針對外包攻擊酪夷,從其他節(jié)點獲取的整個過程,滿足不了證明人隨機挑戰(zhàn)的要求孽惰,依然需要重新生成副本(重新seal需要時間)晚岭,從而阻止外包攻擊 |
生成攻擊generation attacks | 作惡節(jié)點宣稱將要存儲超過其實際容量的內(nèi)容但并未存儲內(nèi)容,以此增加出塊的概率 | 宣稱無用勋功,存儲證明一定要確認密封動作并能應(yīng)對隨機挑戰(zhàn)才能OK坦报,如果重新密封就來不及證明,每次挑戰(zhàn)是有時間要求的 |
2.2.2 復(fù)制證明
2.2.2.1 基礎(chǔ)
- 復(fù)制證明本質(zhì)上可以理解為一種零知識證明酝润,既然是零知識證明燎竖,我們在后面需要理解filecoin復(fù)制證明的題目和答案
zk-SNARK zero knowledge Succinct Non-interactive ARgument of Knowledge
zero knowledge:零知識,即在證明的過程中不透露任何內(nèi)情
succinct:簡潔的要销,主要是指驗證過程不涉及大量數(shù)據(jù)傳輸以及驗證算法簡單
non-interactive:無交互构回。
- 生成證明的方法在filecoin架構(gòu)中稱之為seal密封
密封過程是需要時間的,Seal過程串行加密的過程疏咐,無法并行操作纤掸,seal密封過程是有意設(shè)計慢的,主要目的是為了防攻擊浑塞。
2.2.2.2 filecoin復(fù)制證明的題目和答案
-
公開的信息
- 礦工的節(jié)點公鑰借跪、密封公鑰、存儲公鑰酌壕、原始Data哈希掏愁、該礦工存儲的副本根哈希
-
隱含因素理解:
- 特有節(jié)點的副本哈希是由哪些哈希組成(DAG),任意挑戰(zhàn)者或者攻擊者是不知情的
- 挑戰(zhàn)隨機參數(shù)卵牍,通過CRH(防碰撞的哈希散列Collision-resistant hashing)生成哈希之后傳遞給證明者果港,作用是確定特定的葉子節(jié)點的哈希,比如讓證明者自行計算離H(c))最近的葉子節(jié)點哈希糊昙。
-
復(fù)制證明的題目與答案
- 挑戰(zhàn)參數(shù):副本哈希rt辛掠,挑戰(zhàn)隨機參數(shù)c -> H(c)
- 證明者輸入(題目):
- H(c)(每一次挑戰(zhàn)都會變)
- 隱含信息比喻:該葉子節(jié)點是與H(c)最近的節(jié)點
- 證明者輸出(答案):
- H(c)對應(yīng)的葉子節(jié)點 ——> rt的路徑(攻擊者是很難反推的)
2.2.3 時空證明
- 時空證明可以理解為礦工持續(xù)性地生成復(fù)制證明
- 挑戰(zhàn)者輸入一個隨機參數(shù)c,后面的隨機參數(shù)由證明者基于上一個的挑戰(zhàn)答案去生成释牺。(不用與挑戰(zhàn)者持續(xù)交互)
- 下圖中變量i會輪詢生成新的時間變量產(chǎn)生隨機挑戰(zhàn)萝衩。
2.3 預(yù)期共識
2.3.1 基礎(chǔ)前提
- filecoin基于存儲證明(有效存儲量)來作為礦工在整個網(wǎng)絡(luò)中的power
power屬性 | 說明 |
---|---|
公開 | 1 某一時刻,整個網(wǎng)絡(luò)存儲總量是公開的 2 單個礦工某一時刻没咙,有效存儲總量是公開的 |
可公開驗證的 | 對于每個存儲任務(wù)猩谊,礦工都需要生成”時空證明“,證明持續(xù)提供服務(wù)祭刚。通過讀取區(qū)塊鏈预柒,任何人都可以驗證礦工的power聲明是否是正確的队塘。 |
變化 | 在任意時間點,礦工都可以通過增加新增扇區(qū)和扇區(qū)補充的抵押來增加新的存儲宜鸯。這樣礦工就能變更他們能提供的power。 |
2.3.2 使用power達成共識
- 目的:
每一輪選舉一個(或多個)礦工遮怜,使得贏得選舉的概率與每個礦工分配的存儲成比例
- filecoin預(yù)期共識(Expected Consensus,EC)
- 預(yù)期共識的基本直覺是確定性的淋袖,不可預(yù)測的
- 預(yù)期的期望是每個周期內(nèi)當(dāng)選的Leader是1,但一些周期內(nèi)可能有0個或者許多的Leader锯梁。
- 在每個周期即碗,每個區(qū)塊鏈被延伸一個或多個區(qū)塊
- 區(qū)塊線性擴展,但是數(shù)據(jù)結(jié)構(gòu)是DAG
- EC是一個概率共識陌凳,每個周期都使得比前面的區(qū)塊更加確定剥懒,最終達到了足夠的確定性
2.3.3 選舉方案
預(yù)期共識通過選舉方案產(chǎn)生
選舉方案屬性 | 說明 |
---|---|
公平 | 每個參與者每次選舉只有一次試驗,因為簽名是確定性的合敦,而且t和rand(t)是固定的初橘。隨機值rand(t)在時刻t之前是未知的 |
保密 | 由于有能力的攻擊者不擁有Mi用來計算簽名的秘鑰 |
公開可驗證 | 當(dāng)選Leader i ∈ Lt 可以通過給出t,rand(t)充岛,H(i)/2L保檐,來說服一個有效的驗證者。鑒于前面的觀點(復(fù)制證明與時間證明)崔梗,有能力的攻擊者在不擁有獲勝秘密秘鑰的情況下不能生成證明夜只。 |
2.4 filecoin智能合約
2.4.1 文件合約
允許用戶對他們提供的存儲服務(wù)進行條件編程,會形成一個多樣化市場蒜魄。
- 承包礦工:客戶可以提前指定礦工提供服務(wù)而不參與市場
- 付款策略:客戶可以為礦工設(shè)計不同的獎勵策略扔亥,例如合約可以給礦工支付隨著時間的推移越來高的費用
- 票務(wù)服務(wù):合約可以允許礦工存放token和用于代表用戶的存儲/檢索的支付
- 更復(fù)雜的操作:客戶可以創(chuàng)建合約來運行數(shù)據(jù)更新
2.4.2 智能合約
用戶可以將程序關(guān)聯(lián)到其他系統(tǒng)(如以太坊)的交易上,他們不直接依賴存儲的使用谈为。
2.4.3 與其他系統(tǒng)的兼容
規(guī)格支持跨鏈交互旅挤,以便能將filecoin存儲帶入其他基于區(qū)塊鏈的平臺,同時也將其他平臺的功能帶入filecoin峦阁。
2.5 交易市場
- 存儲需求和供給組成了兩個Filecoin市場:存儲市場和檢索市場谦铃。這兩個市場是兩個去中心化交易所,簡而言之榔昔,客戶和礦工們通過向各自的市場提交訂單來設(shè)定他們請求服務(wù)或者提供服務(wù)的訂單的價格驹闰。交易所為客戶和礦工們提供了一種方式來查看匹配出價并執(zhí)行訂單。如果服務(wù)請求被成功滿足撒会,通過運行管理協(xié)議嘹朗,網(wǎng)絡(luò)保證了礦工得到報酬,客戶將被收取費用诵肛。
- 可以類比為淘寶商城
2.5.1 存儲市場
- 交易數(shù)據(jù)會上鏈屹培,包含于區(qū)塊之中默穴。
- 本質(zhì)上也屬于filecoin智能合約中的文件合約。
- 20190214上線的開發(fā)網(wǎng)絡(luò)已支持
2.5.2 檢索市場
- 交易數(shù)據(jù)不會上鏈褪秀,屬于offchain的方式蓄诽。
- 本質(zhì)上也屬于filecoin智能合約中的文件合約。
2.6 filecoin節(jié)點
- filecoin節(jié)點相關(guān)
- node id表示filecoin網(wǎng)絡(luò)節(jié)點
- account id并表示賬號媒吗,默認與錢包地址一致
- wallet addr表示錢包地址
- miner id表示礦工id
[上一篇鏈接] filecoin技術(shù)架構(gòu)分析之一:1 filecoin概念
[下一篇鏈接] filecoin技術(shù)架構(gòu)分析之三:3 filecoin開發(fā)網(wǎng)絡(luò)使用