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