本書系統(tǒng)介紹Filecoin的原理與實現(xiàn),深入分析了Filecoin的底層運行機制。主要內(nèi)容分三個部分:原理篇、實現(xiàn)篇和拓展篇。原理篇包括第1~7章,在簡單介紹Filecoin的基礎(chǔ)知識和技術(shù)發(fā)展的基礎(chǔ)上,著重對Filecoin的設(shè)計和原理進行比較詳細(xì)的闡述。實現(xiàn)篇包括第8~14章,講述Filecoin的基礎(chǔ)技術(shù)和實現(xiàn)。拓展篇包括第15~17章,講述Filecoin的技術(shù)創(chuàng)新和生態(tài)探索。
前 言
回望過去80年,計算機改變了人類的生活方式,網(wǎng)絡(luò)承載了人類的大部分活動。如今,我們正在快速邁進數(shù)據(jù)時代的新紀(jì)元。從自動駕駛汽車到人形機器人,從智能個人助理到智能家居設(shè)備,我們周圍的世界正在發(fā)生根本的變化,改變著我們的生活、工作和娛樂方式。希捷在《數(shù)據(jù)時代2025》中將上述人類的數(shù)字化進程描述為全球數(shù)據(jù)圈(global datasphere)。數(shù)據(jù)存儲是數(shù)字化最重要的基礎(chǔ),也是發(fā)展得非常快的領(lǐng)域。據(jù)IDC預(yù)測,到2025年,全球數(shù)據(jù)圈將擴展至163ZB(1ZB等于1萬億GB),相當(dāng)于2016年所產(chǎn)生的16.1ZB數(shù)據(jù)的10倍。這種超速增長是過去數(shù)十年計算技術(shù)發(fā)展的必然結(jié)果。計算能力、數(shù)據(jù)存儲和可用性的巨大進步催生了數(shù)字技術(shù)與服務(wù)的全新應(yīng)用類型和場景。由此產(chǎn)生的需求反過來又推動著我們收集、管理、處理和交付數(shù)據(jù)的能力得到進一步發(fā)展,從而順應(yīng)企業(yè)工作流程和人們?nèi)粘I畹男枨蟆?br />本書介紹分布式存儲網(wǎng)絡(luò)Filecoin是如何從數(shù)據(jù)出發(fā)來構(gòu)建Web 3.0的。Filecoin是一個使用區(qū)塊鏈技術(shù)的去中心化、點對點的數(shù)字存儲市場,屬于計算第一性原理中的存儲部分。Filecoin構(gòu)建在星際文件系統(tǒng)(IPFS)之上,并設(shè)計了具備強大可組合性的存儲單元扇區(qū)來實現(xiàn)互聯(lián)網(wǎng)的通用磁盤,允許用戶出租這些未使用的硬盤空間并獲得通證回報,其主要目的是為世界各地的組織和個人提供一種新的數(shù)據(jù)存儲方式。本書不僅介紹Filecoin的演進歷程、設(shè)計細(xì)節(jié)和最新發(fā)展,還介紹第三代區(qū)塊鏈的核心技術(shù),比如信標(biāo)鏈、PoW PoS的融合共識、Actor行為人模型、Gas資源定價模型、DAG鏈、通用虛擬機等。本書是Web 3.0工程師、科研工作者、分布式存儲從業(yè)者、區(qū)塊鏈愛好者不可多得的學(xué)習(xí)材料和案頭參考書。
寫作概述
焜耀研究院誕生于原力區(qū)。自2017年開始,原力區(qū)作為一個分布式存儲的技術(shù)社區(qū)涉足分布式存儲技術(shù)IPFS/Filecoin的推廣、研究和開發(fā)工作。Filecoin是在IPFS之上建立的以區(qū)塊鏈為技術(shù)底層的去中心化存儲和檢索市場,也是一套完整的協(xié)議。
作為一個區(qū)塊鏈項目,F(xiàn)ilecoin融合了大量的區(qū)塊鏈相關(guān)的最新發(fā)展,以及在存儲證明、共識機制和經(jīng)濟模型等方面的大量創(chuàng)新。這就使得Filecoin技術(shù)兼容并蓄,底層技術(shù)需求廣泛而且比較復(fù)雜。盡管Filecoin是一個完全開源的項目,其原理、設(shè)計和實現(xiàn)都是公開的,但是對于一般讀者而言,要理解Filecoin技術(shù)仍然比較困難,尤其在大多數(shù)技術(shù)資料都是英文論著的情況下,對于中國讀者,這相當(dāng)于又多了一道門檻。
幸運的是,在Filecoin協(xié)議、設(shè)計和實現(xiàn)發(fā)展的數(shù)年內(nèi),焜耀研究院全程參與,并作為重要的社區(qū)成員持續(xù)貢獻(xiàn)設(shè)計和代碼。焜耀研究院不僅是Filecoin技術(shù)的推廣者,還是Filecoin集群架構(gòu)客戶端Venus的開發(fā)者和維護者。在充分理解Filecoin的原理和實現(xiàn)的基礎(chǔ)上,焜耀研究院致力于將Filecoin這個最新的分布式存儲技術(shù)介紹給更多的技術(shù)人員和區(qū)塊鏈愛好者,為互聯(lián)網(wǎng)的發(fā)展盡一份綿薄之力。
焜耀研究院在前期研究的基礎(chǔ)上,按照從原理到實現(xiàn)的邏輯對內(nèi)容進行組織整理。由于Filecoin一直處于發(fā)展過程中,所以我們對書稿不斷修訂,并終于在Filecoin主網(wǎng)上線一年之后完成此書。從開始籌劃到完成書稿,歷時16個月。
讀者對象
本書所面向的讀者群比較廣泛,不僅適合那些希望了解分布式存儲原理和實現(xiàn)的技術(shù)人員,也適合希望了解區(qū)塊鏈技術(shù)原理和實踐的讀者。主要讀者對象包括:
IPFS/Filecoin技術(shù)愛好者和生態(tài)從業(yè)者。
分布式系統(tǒng)的技術(shù)人員和開發(fā)者。
區(qū)塊鏈技術(shù)愛好者。
網(wǎng)絡(luò)協(xié)議和網(wǎng)絡(luò)安全技術(shù)愛好者。
大型系統(tǒng)高效設(shè)計的技術(shù)人員。
Web 3.0愛好者和從業(yè)者。
開設(shè)相關(guān)課程的大專院校師生。
如何閱讀本書
本書分為三篇:原理篇、實現(xiàn)篇和拓展篇。
原理篇講述Filecoin的原理與設(shè)計,包括第1~7章。這一篇在簡單介紹Filecoin基礎(chǔ)知識和技術(shù)發(fā)展的基礎(chǔ)上,著重對Filecoin的設(shè)計和原理進行比較詳細(xì)的闡述,包括證明系統(tǒng)、經(jīng)濟系統(tǒng)、共識算法以及存儲和檢索市場的設(shè)計等,旨在幫助讀者由淺入深地了解Filecoin的設(shè)計和創(chuàng)新。
實現(xiàn)篇講述Filecoin的基礎(chǔ)技術(shù)和實現(xiàn),包括第8~14章。這一篇的重點在于Filecoin的工程實現(xiàn),即Filecoin的大量創(chuàng)新如何落實到代碼上,構(gòu)建可以運行的系統(tǒng)和網(wǎng)絡(luò),包括Filecoin的節(jié)點實現(xiàn)、區(qū)塊鏈的基本構(gòu)建方法、虛擬機及相關(guān)角色的構(gòu)建,以及存儲和檢索服務(wù)的保障等。本篇主要以流行的Filecoin實現(xiàn)Lotus和Venus為基礎(chǔ)進行介紹。
拓展篇講述Filecoin的技術(shù)創(chuàng)新和生態(tài)探索,包括第15~17章。這一篇主要介紹Filecoin的發(fā)展創(chuàng)新對區(qū)塊鏈?zhǔn)澜绲挠绊,F(xiàn)ilecoin未來的可能發(fā)展方向,并對Filecoin生態(tài)發(fā)展之路進行初步探索。希望這些內(nèi)容對讀者有一些啟發(fā),并激勵讀者參與到分布式存儲的建設(shè)中。
本書涵蓋技術(shù)介紹和探討,讀者可以選擇感興趣的部分進行精讀。原理篇提供了大量的基礎(chǔ)介紹和設(shè)計背景知識,拓展篇關(guān)注Filecoin的發(fā)展和生態(tài),這兩篇適合所有讀者閱讀。實現(xiàn)篇包含更多的技術(shù)細(xì)節(jié)和代碼,適合希望了解Filecoin的實現(xiàn)以及進行Filecoin開發(fā)的讀者閱讀。
素材、勘誤和支持
Filecoin是一個開源項目,大多數(shù)設(shè)計和代碼都遵循MIT Apache 2.0的開源協(xié)議,可以免費使用。Filecoin也是一個社區(qū)廣泛參與的項目,此項目的貢獻(xiàn)者達(dá)數(shù)千人之多。我們在Filecoin的設(shè)計和建設(shè)過程中一直積極參與,是核心開發(fā)者之一。
本書的素材大多來源于Filecoin的設(shè)計和研究文檔,以及對Filecoin的實現(xiàn)代碼的分析。同時,我們在參與Filecoin建設(shè)的過程中,也產(chǎn)出過不少技術(shù)分析成果,其中有少量的在互聯(lián)網(wǎng)上發(fā)表過,大多數(shù)沒有發(fā)表。這些技術(shù)分析成果被包含在本書中,以構(gòu)建完整的知識體系。
Filecoin是一個新生事物,去中心化存儲技術(shù)也處于發(fā)展初期。雖然我們一直參與Filecoin網(wǎng)絡(luò)的設(shè)計和建設(shè),但由于水平有限,書中難免會出現(xiàn)一些錯誤或者不準(zhǔn)確的地方,懇請讀者批評指正。為此,我們創(chuàng)建了GitHub倉庫用于存放相關(guān)資料。如果大家在閱讀本書的過程中有任何意見或建議,歡迎通過GitHub以Issue的方式提出來,以便我們進一步改進。期待得到你們的反饋和支持。
另外,F(xiàn)ilecoin技術(shù)非常復(fù)雜,本書不可能面面俱到,F(xiàn)ilecoin的持續(xù)更新也不可能及時反映在本書之中,建議大家經(jīng)常瀏覽Filecoin的網(wǎng)站(https://f?ilecoin.io),以及Filecoin在GitHub上的代碼(https://github.com/f?ilecoin-project),其中有大量的項目在持續(xù)開發(fā)中。
致 謝Acknowledgements
首先要感謝這個時代,正如在本書第2章中所描述的,技術(shù)的進步是一個長期的過程,很多前輩做出了諸多貢獻(xiàn)來推動社會文明的進步。感謝協(xié)議實驗室開創(chuàng)了IPFS和Filecoin這些跨時代的網(wǎng)絡(luò)協(xié)議和區(qū)塊鏈項目,為Web 3.0奠定了基石。
其次要感謝機械工業(yè)出版社的老師們,他們花了大量時間審閱書稿并提出了非常專業(yè)和寶貴的意見,沒有他們的支持,本書無法如期順利完成。
本書是焜耀研究院全體同人數(shù)年共同研究和通力合作的成果。從研究員到工程師,從論文到設(shè)計,從編碼實現(xiàn)到生態(tài)建設(shè),焜耀研究院全體同人親歷和見證了Filecoin和Web 3.0的發(fā)軔和發(fā)展,并取得了不錯的成績。本書的作者團隊熔理論與實踐于一爐,集理解與創(chuàng)造于一體,歷時16個月,終成此書。特別感謝石濤聲研究員在本書的素材收集和整理上所做的大量工作,本書的大部分內(nèi)容都是在石濤聲所整理的素材基礎(chǔ)上完成的。李昕負(fù)責(zé)全書的技術(shù)架構(gòu)、章節(jié)組織、評審和全書的校訂工作。本書的作者團隊還包括Filecoin資深工程師王麟、王鈔、李濤、李君龍等。王鈔修訂和審閱了原理篇的大部分章節(jié);李濤和李君龍作為Venus的核心開發(fā)者,主要負(fù)責(zé)實現(xiàn)篇的修訂和審閱;王麟負(fù)責(zé)拓展篇的編寫和審閱。本書的許多工作是大家在業(yè)余時間完成的,是大家通力協(xié)作、反復(fù)討論、仔細(xì)校對的成果。感謝大家的協(xié)作精神和奉獻(xiàn)精神。
在本書的發(fā)起和寫作過程中,得到了焜耀研究院主任張成龍先生的大力支持。正是張成龍先生建立和推崇的價值、共建、共享、榮耀文化理念,引導(dǎo)大家在本書的編寫過程中從價值出發(fā),共同努力,推出一本與大家共享知識和理念的書籍,實現(xiàn)彼此的榮耀。感謝張成龍先生的指導(dǎo)和指引。另外,郝梓言女士在本書的寫作過程中做了很多認(rèn)真細(xì)致的協(xié)調(diào)和推進工作,感謝她一貫的支持和保障。
Web 3.0的知識體系浩如煙海,區(qū)塊鏈和分布式存儲的發(fā)展也日新月異。謹(jǐn)以此書獻(xiàn)給我們最親愛的家人,以及中國眾多熱愛新技術(shù)、追求Web 3.0和區(qū)塊鏈技術(shù)的朋友們。
推薦序
前 言
致 謝
原理篇 Filecoin原理與設(shè)計
第1章 Filecoin基礎(chǔ) 2
1.1 Filecoin簡介 2
1.2 Filecoin的使命 4
1.3 Filecoin網(wǎng)絡(luò)基礎(chǔ)和基本概念 6
1.4 本章小結(jié) 9
第2章 Filecoin的技術(shù)發(fā)展 10
2.1 站在巨人的肩膀上 10
2.2 《Filecoin白皮書》和技術(shù)演進 14
2.2.1 《Filecoin白皮書》 14
2.2.2 Filecoin證明系統(tǒng) 14
2.2.3 重構(gòu)共識機制 15
2.3 主網(wǎng)啟動 16
2.4 本章小結(jié) 17
第3章 Filecoin的證明算法系統(tǒng) 18
3.1 分布式存儲的安全性 18
3.1.1 世紀(jì)存儲的挑戰(zhàn) 19
3.1.2 去中心化存儲的優(yōu)勢 20
3.1.3 去中心化存儲網(wǎng)絡(luò)中可能
存在的作弊行為 21
3.2 Filecoin的復(fù)制證明 21
3.2.1 前置概念 21
3.2.2 復(fù)制證明的實現(xiàn) 22
3.3 時空證明系統(tǒng) 25
3.3.1 前置概念 25
3.3.2 時空證明的實現(xiàn) 25
3.4 本章小結(jié) 29
第4章 Filecoin經(jīng)濟系統(tǒng) 30
4.1 海島經(jīng)濟模型 30
4.1.1 數(shù)據(jù)市場 31
4.1.2 出口經(jīng)濟 31
4.1.3 市場參與者 32
4.2 基礎(chǔ)設(shè)計原則 34
4.3 Filecoin經(jīng)濟模型中的反饋機制 35
4.4 初始參數(shù) 37
4.5 已驗證的客戶 38
4.6 本章小結(jié) 39
第5章 Filecoin中的共識算法 40
5.1 共識技術(shù)基礎(chǔ) 40
5.1.1 共識機制領(lǐng)導(dǎo)人選舉 41
5.1.2 秘密單個領(lǐng)導(dǎo)人選舉 41
5.2 Filecoin共識機制的模型設(shè)計 42
5.2.1 Filecoin共識 42
5.2.2 模型化創(chuàng)建區(qū)塊存力 42
5.2.3 用時空證明保障數(shù)據(jù)的
安全性 43
5.2.4 使用存力達(dá)成共識 43
5.3 預(yù)期共識算法的實現(xiàn) 44
5.3.1 預(yù)期共識中的Ticket 45
5.3.2 秘密領(lǐng)導(dǎo)人選舉 45
5.3.3 生成選舉證明 47
5.3.4 分布函數(shù)的選擇 49
5.4 一些實現(xiàn)細(xì)節(jié) 51
5.4.1 生成選舉證明 51
5.4.2 領(lǐng)導(dǎo)人選舉核查 52
5.4.3 鏈的選擇 52
5.4.4 共識錯誤 54
5.5 本章小結(jié) 55
第6章 Filecoin的其他基礎(chǔ)組件 56
6.1 加密原語 56
6.1.1 消息及簽名 57
6.1.2 ECDSA簽名 58
6.1.3 BLS簽名 58
6.2 可驗證隨機函數(shù) 59
6.2.1 隨機數(shù) 60
6.2.2 從VRF中抽取票據(jù) 61
6.2.3 使用隨機數(shù) 62
6.3 Filecoin引用的第三方庫 63
6.3.1 Drand 63
6.3.2 IPFS協(xié)議 66
6.3.3 IPLD協(xié)議 66
6.3.4 libp2p協(xié)議 68
6.4 本章小結(jié) 68
第7章 Filecoin的存儲和檢索 70
7.1 存儲的基礎(chǔ)數(shù)據(jù)及構(gòu)成 70
7.1.1 基礎(chǔ)數(shù)據(jù)類型 70
7.1.2 存儲市場合約 72
7.1.3 鏈上訂單狀態(tài)流轉(zhuǎn) 74
7.1.4 存儲及檢索的數(shù)據(jù)流
傳輸模型 76
7.2 存儲市場 78
7.2.1 存儲市場運作概述 78
7.2.2 存儲客戶端 79
7.2.3 存儲服務(wù)提供者 80
7.2.4 存儲過程中的抵押及其意義 81
7.2.5 存儲過程中的狀態(tài)變化 82
7.3 檢索市場 84
7.3.1 檢索市場運作概述 84
7.3.2 檢索客戶端 85
7.3.3 檢索服務(wù)商 86
7.3.4 檢索過程中的信任建立 87
7.3.5 檢索過程中的狀態(tài)變化 88
7.4 本章小結(jié) 89
實現(xiàn)篇 Filecoin的基礎(chǔ)技術(shù)和實現(xiàn)
第8章 Filecoin區(qū)塊鏈的節(jié)點實現(xiàn) 92
8.1 節(jié)點類型 92
8.2 節(jié)點本地存儲 94
8.2.1 私鑰存儲 94
8.2.2 IPLD存儲 95
8.3 節(jié)點的網(wǎng)絡(luò)協(xié)議 96
8.4 節(jié)點的接口協(xié)議 97
8.5 節(jié)點的時鐘 98
8.6 本章小結(jié) 99
第9章 Filecoin區(qū)塊鏈的文件與
數(shù)據(jù) 100
9.1 Filecoin的本地文件存儲 100
9.2 Filecoin的數(shù)據(jù)片 101
9.2.1 數(shù)據(jù)片的數(shù)據(jù)結(jié)構(gòu) 101
9.2.2 數(shù)據(jù)片表示 102
9.2.3 PieceStore抽象 104
9.3 Filecoin的數(shù)據(jù)傳輸 104
9.3.1 數(shù)據(jù)傳輸模塊 105
9.3.2 術(shù)語 106
9.3.3 請求流程 106
9.3.4 數(shù)據(jù)結(jié)構(gòu) 107
9.3.5 數(shù)據(jù)流實現(xiàn)樣例 109
9.4 Filecoin的數(shù)據(jù)格式和序列化 114
9.5 本章小結(jié) 115
第10章 Filecoin區(qū)塊鏈 116
10.1 Filecoin區(qū)塊鏈系統(tǒng)的組成 116
10.2 區(qū)塊 117
10.2.1 區(qū)塊的結(jié)構(gòu) 117
10.2.2 TipSet 119
10.2.3 鏈管理器 120
10.2.4 區(qū)塊生產(chǎn)者 120
10.3 消息池 121
10.4 鏈同步 122
10.4.1 鏈同步概述 123
10.4.2 鏈同步術(shù)語 123
10.4.3 鏈同步狀態(tài)機 124
10.4.4 對等節(jié)點發(fā)現(xiàn) 125
10.4.5 步進區(qū)塊驗證 125
10.5 存儲算力共識 127
10.5.1 存儲服務(wù)提供者 128
10.5.2 區(qū)塊生產(chǎn)者 128
10.5.3 算力 128
10.5.4 信標(biāo)項 129
10.5.5 隨機票 130
10.5.6