filecoin技術(shù)架構(gòu)分析二:filecoin通用語(yǔ)言理解

為什么要把 filecoin 通用語(yǔ)言單獨(dú)列為一講

筆者認(rèn)為一位優(yōu)秀的軟件從業(yè)人員伸蚯,必須具備兩種必備能力

架構(gòu)設(shè)計(jì)能力

架構(gòu)剖析能力

這兩者是相輔相成的缠沈,架構(gòu)設(shè)計(jì)師所設(shè)計(jì)之架構(gòu)不可能超過(guò)自己的認(rèn)知范疇膘壶,故架構(gòu)設(shè)計(jì)師必須有效高效地拓展自己的技術(shù)認(rèn)知視圖,以適應(yīng)當(dāng)代軟件架構(gòu)高速發(fā)展的現(xiàn)實(shí)洲愤。而拓展的途徑颓芭,一方面就是相關(guān)理論體系的快速學(xué)習(xí)跟進(jìn);另一方面柬赐,就是實(shí)戰(zhàn)亡问,對(duì)有顯著價(jià)值的優(yōu)秀軟件項(xiàng)目進(jìn)行架構(gòu)剖析。有理論躺率、有實(shí)戰(zhàn)方是王道玛界。理解具體架構(gòu)的通用語(yǔ)言就是分析他人架構(gòu)設(shè)計(jì)思維的一條捷徑。

理解具體技術(shù)架構(gòu)的通用語(yǔ)言是分析架構(gòu)的一條捷徑

通用語(yǔ)言是架構(gòu)設(shè)計(jì)人員為實(shí)現(xiàn)某個(gè)具體技術(shù)架構(gòu)悼吱,所高度抽象出來(lái)的名詞或者稱謂慎框,通過(guò)理解通用語(yǔ)言,可以快速理解架構(gòu)設(shè)計(jì)人員的思維和設(shè)計(jì)目的后添。

與讀書方法類似(薄讀-> 厚讀 > 再薄讀)笨枯,理解通用語(yǔ)言就是第一次的薄讀過(guò)程,非常重要。

對(duì)業(yè)務(wù)的理解是非常有必要的馅精,所以在第一章中严嗜,筆者鋪墊了 filecoin 的一些基本概念,任何架構(gòu)的設(shè)計(jì)不能脫離業(yè)務(wù)而行洲敢,業(yè)務(wù)驅(qū)動(dòng)開(kāi)發(fā)仍是非常實(shí)用的架構(gòu)模式漫玄;filecoin 技術(shù)架構(gòu)從業(yè)務(wù)來(lái)劃分,可劃分為兩個(gè)大的范疇压彭。

分布式存儲(chǔ)解決方案

存儲(chǔ)礦工

檢索礦工

存儲(chǔ)客戶端

檢索客戶端

區(qū)塊鏈項(xiàng)目

filecoin 公鏈

filecoin actors 智能合約

filecoin 核心通用業(yè)務(wù)組件

組件名稱 目的

DSN 保障數(shù)據(jù)安全睦优、包括故障容錯(cuò)、數(shù)據(jù)完整性壮不、數(shù)據(jù)可恢復(fù)等

新型存儲(chǔ)證明 證明礦工按照協(xié)議規(guī)范存儲(chǔ)了客戶指定的數(shù)據(jù)汗盘,數(shù)據(jù)有效性

可驗(yàn)證市場(chǎng) 對(duì)礦工與客戶組成的交易市場(chǎng)進(jìn)行了建模,保證交易的有效性

有效工作量證明 出塊的共識(shí)機(jī)制询一,很重要隐孽,做到激勵(lì)兼容

下面各節(jié)將會(huì)對(duì) filecoin 技術(shù)架構(gòu)中的核心通用語(yǔ)言進(jìn)行解釋。

存儲(chǔ)證明

Proof-of-Storage 包含復(fù)制證明(PoR)和時(shí)空證明(PoSt)健蕊,其作用主要有兩點(diǎn):

證明礦工做了有效存儲(chǔ)

競(jìng)爭(zhēng)區(qū)塊打包出塊菱阵,獲取區(qū)塊獎(jiǎng)勵(lì)

1

2

3

2.2.1 為什么使用存儲(chǔ)證明

相對(duì)于 PoW(Proof-of-Work)或者 PoC

? ? PoW 耗能嚴(yán)重;PoC 以空間換時(shí)間缩功,同樣存在耗能嚴(yán)重問(wèn)題

? ? 而 filecoin 網(wǎng)絡(luò)的耗能必須遠(yuǎn)低于類似比特幣的 PoW送粱,參見(jiàn)第一講 filecoin 的對(duì)標(biāo)對(duì)象,filecoin 必須實(shí)現(xiàn)以更低的成對(duì)去應(yīng)對(duì)商業(yè)競(jìng)爭(zhēng)掂之,同時(shí)提供相同級(jí)別的安全性,以及文件存儲(chǔ)的效用

? ? 存儲(chǔ)證明需要做要與實(shí)體經(jīng)濟(jì)掛鉤脆丁,減少無(wú)謂浪費(fèi)

相對(duì)于 PoS(Proof-of-Stake)或者 PoC

? ? Proof-of-Storage 在定向領(lǐng)域(分布式存儲(chǔ))以更簡(jiǎn)單方式世舰,協(xié)調(diào)激勵(lì),并驅(qū)使礦工以有競(jìng)爭(zhēng)力的價(jià)格提供真實(shí)的新存儲(chǔ)槽卫,它促使礦工積極保證 filecoin 網(wǎng)絡(luò)的效用

? ? 當(dāng)然 Proof-of-Stake 是區(qū)塊鏈領(lǐng)域的熱點(diǎn)研究問(wèn)題

Proof-of-Storage 阻止網(wǎng)絡(luò)攻擊

1

2

3

4

5

6

7

8

9

10

攻擊類型 說(shuō)明 阻止攻擊原理

女巫攻擊 Sybil attack 作惡節(jié)點(diǎn)創(chuàng)造多個(gè)女巫身份跟压,謊稱存儲(chǔ)了多個(gè)副本 每個(gè)節(jié)點(diǎn)的副本都是有簽名的,想通過(guò)復(fù)制證明歼培,就相當(dāng)于真實(shí)做了有效存儲(chǔ)

外包攻擊 outsourcing attacks 作惡節(jié)點(diǎn)快速?gòu)钠渌?jié)點(diǎn)獲取內(nèi)容震蒋,謊稱他們存儲(chǔ)了比他們實(shí)際存儲(chǔ)更多的內(nèi)容 針對(duì)外包攻擊,從其他節(jié)點(diǎn)獲取的整個(gè)過(guò)程躲庄,滿足不了證明人隨機(jī)挑戰(zhàn)的要求查剖,依然需要重新生成副本(重新 seal 需要時(shí)間),從而阻止外包攻擊

生成攻擊 generation attacks 作惡節(jié)點(diǎn)宣稱將要存儲(chǔ)超過(guò)其實(shí)際容量的內(nèi)容但并未存儲(chǔ)內(nèi)容噪窘,以此增加出塊的概率 宣稱無(wú)用笋庄,存儲(chǔ)證明一定要確認(rèn)密封動(dòng)作并能應(yīng)對(duì)隨機(jī)挑戰(zhàn)才能 OK,如果重新密封就來(lái)不及證明,每次挑戰(zhàn)是有時(shí)間要求的

復(fù)制證明

基礎(chǔ)

復(fù)制證明本質(zhì)上可以理解為一種零知識(shí)證明直砂,既然是零知識(shí)證明菌仁,我們?cè)诤竺嫘枰斫?filecoin 復(fù)制證明的題目和答案

zk-SNARK zero knowledge Succinct Non-interactive ARgument of Knowledge

zero knowledge:零知識(shí),即在證明的過(guò)程中不透露任何內(nèi)情

succinct:簡(jiǎn)潔的静暂,主要是指驗(yàn)證過(guò)程不涉及大量數(shù)據(jù)傳輸以及驗(yàn)證算法簡(jiǎn)單

non-interactive:無(wú)交互济丘。

生成證明的方法在 filecoin 架構(gòu)中稱之為 seal 密封

密封過(guò)程是需要時(shí)間的,Seal 過(guò)程串行加密的過(guò)程洽蛀,無(wú)法并行操作摹迷,seal 密封過(guò)程是有意設(shè)計(jì)慢的,主要目的是為了防攻擊辱士。

1

2

3

4

5

6

7

8

9

10

filecoin 復(fù)制證明的題目和答案

公開(kāi)的信息

? ? 礦工的節(jié)點(diǎn)公鑰泪掀、密封公鑰、存儲(chǔ)公鑰颂碘、原始 Data 哈希异赫、該礦工存儲(chǔ)的副本根哈希

隱含因素理解:

? ? 特有節(jié)點(diǎn)的副本哈希是由哪些哈希組成(DAG),任意挑戰(zhàn)者或者攻擊者是不知情的

? ? 挑戰(zhàn)隨機(jī)參數(shù)头岔,通過(guò) CRH(防碰撞的哈希散列 Collision-resistant hashing)生成哈希之后傳遞給證明者塔拳,作用是確定特定的葉子節(jié)點(diǎn)的哈希,比如讓證明者自行計(jì)算離 H(c))最近的葉子節(jié)點(diǎn)哈希峡竣。

復(fù)制證明的題目與答案

? ? 挑戰(zhàn)參數(shù):副本哈希 rt靠抑,挑戰(zhàn)隨機(jī)參數(shù) c -> H(c)

? ? 證明者輸入(題目):

? ? ? ? H(c)(每一次挑戰(zhàn)都會(huì)變)

? ? ? ? 隱含信息比喻:該葉子節(jié)點(diǎn)是與 H(c)最近的節(jié)點(diǎn)

? ? 證明者輸出(答案):

? ? ? ? H(c)對(duì)應(yīng)的葉子節(jié)點(diǎn) ——> rt 的路徑(攻擊者是很難反推的)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

時(shí)空證明

時(shí)空證明可以理解為礦工持續(xù)性地生成復(fù)制證明

? ? 挑戰(zhàn)者輸入一個(gè)隨機(jī)參數(shù) c,后面的隨機(jī)參數(shù)由證明者基于上一個(gè)的挑戰(zhàn)答案去生成适掰。(不用與挑戰(zhàn)者持續(xù)交互)

? ? 下圖中變量 i 會(huì)輪詢生成新的時(shí)間變量產(chǎn)生隨機(jī)挑戰(zhàn)颂碧。

1

2

3

時(shí)空證明

預(yù)期共識(shí)

基礎(chǔ)前提

filecoin 基于存儲(chǔ)證明(有效存儲(chǔ)量)來(lái)作為礦工在整個(gè)網(wǎng)絡(luò)中的 power

1

power 屬性 說(shuō)明

公開(kāi) 1 某一時(shí)刻,整個(gè)網(wǎng)絡(luò)存儲(chǔ)總量是公開(kāi)的

2 單個(gè)礦工某一時(shí)刻类浪,有效存儲(chǔ)總量是公開(kāi)的

可公開(kāi)驗(yàn)證的 對(duì)于每個(gè)存儲(chǔ)任務(wù)载城,礦工都需要生成”時(shí)空證明“,證明持續(xù)提供服務(wù)费就。通過(guò)讀取區(qū)塊鏈诉瓦,任何人都可以驗(yàn)證礦工的 power 聲明是否是正確的。

變化 在任意時(shí)間點(diǎn)力细,礦工都可以通過(guò)增加新增扇區(qū)和扇區(qū)補(bǔ)充的抵押來(lái)增加新的存儲(chǔ)睬澡。這樣礦工就能變更他們能提供的 power。

使用 power 達(dá)成共識(shí)

目的:

每一輪選舉一個(gè)(或多個(gè))礦工眠蚂,使得贏得選舉的概率與每個(gè)礦工分配的存儲(chǔ)成比例

filecoin 預(yù)期共識(shí)(Expected Consensus,EC)

? ? 預(yù)期共識(shí)的基本直覺(jué)是確定性的煞聪,不可預(yù)測(cè)的

? ? 預(yù)期的期望是每個(gè)周期內(nèi)當(dāng)選的 Leader 是 1,但一些周期內(nèi)可能有 0 個(gè)或者許多的 Leader河狐。

? ? 在每個(gè)周期米绕,每個(gè)區(qū)塊鏈被延伸一個(gè)或多個(gè)區(qū)塊瑟捣,見(jiàn)下圖

? ? 區(qū)塊線性擴(kuò)展,但是數(shù)據(jù)結(jié)構(gòu)是 DAG

? ? EC 是一個(gè)概率共識(shí)栅干,每個(gè)周期都使得比前面的區(qū)塊更加確定迈套,最終達(dá)到了足夠的確定性

1

2

3

4

5

6

7

8

9

10

選舉方案

預(yù)期共識(shí)通過(guò)選舉方案產(chǎn)生

1

選舉方案

選舉方案

選舉方案屬性 說(shuō)明

公平 每個(gè)參與者每次選舉只有一次試驗(yàn),因?yàn)楹灻谴_定性的碱鳞,而且 t 和 rand(t)是固定的桑李。隨機(jī)值 rand(t)在時(shí)刻 t 之前是未知的

保密 由于有能力的攻擊者不擁有 Mi 用來(lái)計(jì)算簽名的秘鑰

公開(kāi)可驗(yàn)證 當(dāng)選 Leader i ∈ Lt 可以通過(guò)給出 t,rand(t)窿给,H(i)/2L贵白,來(lái)說(shuō)服一個(gè)有效的驗(yàn)證者。鑒于前面的觀點(diǎn)(復(fù)制證明與時(shí)間證明)崩泡,有能力的攻擊者在不擁有獲勝秘密秘鑰的情況下不能生成證明禁荒。

filecoin 智能合約

文件合約

允許用戶對(duì)他們提供的存儲(chǔ)服務(wù)進(jìn)行條件編程,會(huì)形成一個(gè)多樣化市場(chǎng)角撞。

承包礦工:客戶可以提前指定礦工提供服務(wù)而不參與市場(chǎng)

付款策略:客戶可以為礦工設(shè)計(jì)不同的獎(jiǎng)勵(lì)策略呛伴,例如合約可以給礦工支付隨著時(shí)間的推移越來(lái)高的費(fèi)用

票務(wù)服務(wù):合約可以允許礦工存放 token 和用于代表用戶的存儲(chǔ)/檢索的支付

更復(fù)雜的操作:客戶可以創(chuàng)建合約來(lái)運(yùn)行數(shù)據(jù)更新

1

2

3

4

5

6

智能合約

用戶可以將程序關(guān)聯(lián)到其他系統(tǒng)(如以太坊)的交易上,他們不直接依賴存儲(chǔ)的使用谒所。

1

與其他系統(tǒng)的兼容

規(guī)格支持跨鏈交互热康,以便能將 filecoin 存儲(chǔ)帶入其他基于區(qū)塊鏈的平臺(tái),同時(shí)也將其他平臺(tái)的功能帶入 filecoin劣领。

1

交易市場(chǎng)

存儲(chǔ)需求和供給組成了兩個(gè) Filecoin 市場(chǎng):存儲(chǔ)市場(chǎng)和檢索市場(chǎng)姐军。這兩個(gè)市場(chǎng)是兩個(gè)去中心化交易所,簡(jiǎn)而言之尖淘,客戶和礦工們通過(guò)向各自的市場(chǎng)提交訂單來(lái)設(shè)定他們請(qǐng)求服務(wù)或者提供服務(wù)的訂單的價(jià)格奕锌。交易所為客戶和礦工們提供了一種方式來(lái)查看匹配出價(jià)并執(zhí)行訂單。如果服務(wù)請(qǐng)求被成功滿足村生,通過(guò)運(yùn)行管理協(xié)議歇攻,網(wǎng)絡(luò)保證了礦工得到報(bào)酬,客戶將被收取費(fèi)用梆造。

可以類比為淘寶商城

1

2

存儲(chǔ)市場(chǎng)

交易數(shù)據(jù)會(huì)上鏈,包含于區(qū)塊之中葬毫。

本質(zhì)上也屬于 filecoin 智能合約中的文件合約镇辉。

20190214 上線的開(kāi)發(fā)網(wǎng)絡(luò)已支持

1

2

3

檢索市場(chǎng)

交易數(shù)據(jù)不會(huì)上鏈,屬于 offchain 的方式贴捡。

本質(zhì)上也屬于 filecoin 智能合約中的文件合約忽肛。

1

2

filecoin 節(jié)點(diǎn)

filecoin 節(jié)點(diǎn)相關(guān)

? ? node id 表示 filecoin 網(wǎng)絡(luò)節(jié)點(diǎn)

? ? account id 并表示賬號(hào),默認(rèn)與錢包地址一致

? ? wallet addr 表示錢包地址

? ? miner id 表示礦工 id

1

2

3

4

5

filecoin 節(jié)點(diǎn)

深入淺出區(qū)塊鏈 - 打造高質(zhì)量區(qū)塊鏈技術(shù)博客烂斋,學(xué)區(qū)塊鏈都來(lái)這里屹逛,關(guān)注知乎础废、微博 掌握區(qū)塊鏈技術(shù)動(dòng)態(tài)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末罕模,一起剝皮案震驚了整個(gè)濱河市评腺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淑掌,老刑警劉巖蒿讥,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異抛腕,居然都是意外死亡芋绸,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門担敌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)摔敛,“玉大人,你說(shuō)我怎么就攤上這事全封÷黻迹” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵售貌,是天一觀的道長(zhǎng)给猾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)颂跨,這世上最難降的妖魔是什么敢伸? 我笑而不...
    開(kāi)封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮恒削,結(jié)果婚禮上池颈,老公的妹妹穿的比我還像新娘。我一直安慰自己钓丰,他們只是感情好躯砰,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著携丁,像睡著了一般琢歇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梦鉴,一...
    開(kāi)封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天李茫,我揣著相機(jī)與錄音,去河邊找鬼肥橙。 笑死魄宏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的存筏。 我是一名探鬼主播宠互,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼味榛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了予跌?” 一聲冷哼從身側(cè)響起搏色,我...
    開(kāi)封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎匕得,沒(méi)想到半個(gè)月后继榆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡汁掠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年略吨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片考阱。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翠忠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出乞榨,到底是詐尸還是另有隱情秽之,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布吃既,位于F島的核電站考榨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鹦倚。R本人自食惡果不足惜河质,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望震叙。 院中可真熱鬧掀鹅,春花似錦、人聲如沸媒楼。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)划址。三九已至扔嵌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間夺颤,已是汗流浹背对人。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拂共,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓姻几,卻偏偏與公主長(zhǎng)得像宜狐,于是被迫代替她去往敵國(guó)和親势告。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344