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