猜你喜欢
Filecoin原理与实现

Filecoin原理与实现

书籍作者:焜耀研究院 ISBN:9787111713463
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:4600
创建日期:2023-05-11 发布日期:2023-05-11
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书系统地介绍Filecoin的原理与实现,深入分析了Filecoin的底层运行机制,不仅介绍了Filecoin的演进历程、设计细节和最新发展,还介绍了第三代区块链的核心技术,比如信标链、PoW+PoS的融合共识、Actor行为人模型、Gas资源定价模型、DAG 链、通用虚拟机等。全书分为三篇:原理篇、实现篇和拓展篇。原理篇包括第1~7章,在简单介绍Filecoin的基础知识和技术发展的基础上,着重对Filecoin的设计和原理进行比较详细的阐述。实现篇包括第8~14章,讲述Filecoin的基础技术和实现。拓展篇包括第15~17章,讲述Filecoin的技术创新和生态探索。

作者简介

焜耀研究院
成立于2018年,致力于Web 3.0与分布式存储的生态研究与技术研发,遵循“综合性、研究型、国际化”的理念,聚焦变革性、颠覆性创新技术的研究。焜耀研究院通过生态研究、技术研发、著作翻译、社区和技术沙龙组织、行业研究报告撰写等多种方式推动行业发展,注重多赛道、跨领域基础设施的运用,加强创新科技与产品的结合,并一直积极参与Filecoin的设计和建设过程,是核心开发者之一。

本书编委会
主任:张成龙
成员:李昕 石涛声 王麟 李涛 王钞 李君龙

前言

回望过去80年,计算机改变了人类的生活方式,网络承载了人类的大部分活动。如今,我们正在快速迈进数据时代的新纪元。从自动驾驶汽车到人形机器人,从智能个人助理到智能家居设备,我们周围的世界正在发生根本的变化,改变着我们的生活、工作和娱乐方式。希捷在《数据时代2025》中将上述人类的数字化进程描述为“全球数据圈”(global datasphere)。数据存储是数字化最重要的基础,也是发展得非常快的领域。据IDC预测,到2025年,全球数据圈将扩展至163ZB(1ZB等于1万亿GB),相当于2016年所产生的16.1ZB数据的10倍。这种超速增长是过去数十年计算技术发展的必然结果。计算能力、数据存储和可用性的巨大进步催生了数字技术与服务的全新应用类型和场景。由此产生的需求反过来又推动着我们收集、管理、处理和交付数据的能力得到进一步发展,从而顺应企业工作流程和人们日常生活的需求。


本书介绍分布式存储网络Filecoin是如何从数据出发来构建Web 3.0的。Filecoin是一个使用区块链技术的去中心化、点对点的数字存储市场,属于计算第一性原理中的存储部分。Filecoin构建在星际文件系统(IPFS)之上,并设计了具备强大可组合性的存储单元—扇区来实现互联网的通用“磁盘”,允许用户出租这些未使用的“硬盘”空间并获得通证回报,其主要目的是为世界各地的组织和个人提供一种新的数据存储方式。本书不仅介绍Filecoin的演进历程、设计细节和最新发展,还介绍第三代区块链的核心技术,比如信标链、PoW+PoS的融合共识、Actor行为人模型、Gas资源定价模型、DAG链、通用虚拟机等。本书是Web 3.0工程师、科研工作者、分布式存储从业者、区块链爱好者不可多得的学习材料和案头参考书。


写作概述

焜耀研究院诞生于原力区。自2017年开始,原力区作为一个分布式存储的技术社区涉足分布式存储技术IPFS/Filecoin的推广、研究和开发工作。Filecoin是在IPFS之上建立的以区块链为技术底层的去中心化存储和检索市场,也是一套完整的协议。

作为一个区块链项目,Filecoin融合了大量的区块链相关的最新发展,以及在存储证明、共识机制和经济模型等方面的大量创新。这就使得Filecoin技术兼容并蓄,底层技术需求广泛而且比较复杂。尽管Filecoin是一个完全开源的项目,其原理、设计和实现都是公开的,但是对于一般读者而言,要理解Filecoin技术仍然比较困难,尤其在大多数技术资料都是英文论著的情况下,对于中国读者,这相当于又多了一道门槛。

幸运的是,在Filecoin协议、设计和实现发展的数年内,焜耀研究院全程参与,并作为重要的社区成员持续贡献设计和代码。焜耀研究院不仅是Filecoin技术的推广者,还是Filecoin集群架构客户端Venus的开发者和维护者。在充分理解Filecoin的原理和实现的基础上,焜耀研究院致力于将Filecoin这个最新的分布式存储技术介绍给更多的技术人员和区块链爱好者,为互联网的发展尽一份绵薄之力。

焜耀研究院在前期研究的基础上,按照从原理到实现的逻辑对内容进行组织整理。由于Filecoin一直处于发展过程中,所以我们对书稿不断修订,并终于在Filecoin主网上线一年之后完成此书。从开始筹划到完成书稿,历时16个月。


读者对象

本书所面向的读者群比较广泛,不仅适合那些希望了解分布式存储原理和实现的技术人员,也适合希望了解区块链技术原理和实践的读者。主要读者对象包括:

IPFS/Filecoin技术爱好者和生态从业者。

分布式系统的技术人员和开发者。

区块链技术爱好者。

网络协议和网络安全技术爱好者。

大型系统高效设计的技术人员。

Web 3.0爱好者和从业者。

开设相关课程的大专院校师生。


如何阅读本书

本书分为三篇:原理篇、实现篇和拓展篇。

原理篇讲述Filecoin的原理与设计,包括第1~7章。这一篇在简单介绍Filecoin基础知识和技术发展的基础上,着重对Filecoin的设计和原理进行比较详细的阐述,包括证明系统、经济系统、共识算法以及存储和检索市场的设计等,旨在帮助读者由浅入深地了解Filecoin的设计和创新。

实现篇讲述Filecoin的基础技术和实现,包括第8~14章。这一篇的重点在于Filecoin的工程实现,即Filecoin的大量创新如何落实到代码上,构建可以运行的系统和网络,包括Filecoin的节点实现、区块链的基本构建方法、虚拟机及相关角色的构建,以及存储和检索服务的保障等。本篇主要以流行的Filecoin实现——Lotus和Venus为基础进行介绍。

拓展篇讲述Filecoin的技术创新和生态探索,包括第15~17章。这一篇主要介绍Filecoin的发展创新对区块链世界的影响,Filecoin未来的可能发展方向,并对Filecoin生态发展之路进行初步探索。希望这些内容对读者有一些启发,并激励读者参与到分布式存储的建设中。

本书涵盖技术介绍和探讨,读者可以选择感兴趣的部分进行精读。原理篇提供了大量的基础介绍和设计背景知识,拓展篇关注Filecoin的发展和生态,这两篇适合所有读者阅读。实现篇包含更多的技术细节和代码,适合希望了解Filecoin的实现以及进行Filecoin开发的读者阅读。


素材、勘误和支持

Filecoin是一个开源项目,大多数设计和代码都遵循MIT+Apache 2.0的开源协议,可以免费使用。Filecoin也是一个社区广泛参与的项目,此项目的贡献者达数千人之多。我们在Filecoin的设计和建设过程中一直积极参与,是核心开发者之一。

本书的素材大多来源于Filecoin的设计和研究文档,以及对Filecoin的实现代码的分析。同时,我们在参与Filecoin建设的过程中,也产出过不少技术分析成果,其中有少量的在互联网上发表过,大多数没有发表。这些技术分析成果被包含在本书中,以构建完整的知识体系。

Filecoin是一个新生事物,去中心化存储技术也处于发展初期。虽然我们一直参与Filecoin网络的设计和建设,但由于水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,我们创建了GitHub仓库用于存放相关资料。如果大家在阅读本书的过程中有任何意见或建议,欢迎通过GitHub以Issue的方式提出来,以便我们进一步改进。期待得到你们的反馈和支持。

另外,Filecoin技术非常复杂,本书不可能面面俱到,Filecoin的持续更新也不可能及时反映在本书之中,建议大家经常浏览Filecoin的网站(https://f?ilecoin.io),以及Filecoin在GitHub上的代码(https://github.com/f?ilecoin-project),其中有大量的项目在持续开发中。


致  谢

首先要感谢这个时代,正如在本书第2章中所描述的,技术的进步是一个长期的过程,很多前辈做出了诸多贡献来推动社会文明的进步。感谢协议实验室开创了IPFS和Filecoin这些跨时代的网络协议和区块链项目,为Web 3.0奠定了基石。

其次要感谢机械工业出版社的老师们,他们花了大量时间审阅书稿并提出了非常专业和宝贵的意见,没有他们的支持,本书无法如期顺利完成。

本书是焜耀研究院全体同人数年共同研究和通力合作的成果。从研究员到工程师,从论文到设计,从编码实现到生态建设,焜耀研究院全体同人亲历和见证了Filecoin和Web 3.0的发轫和发展,并取得了不错的成绩。本书的作者团队熔理论与实践于一炉,集理解与创造于一体,历时16个月,终成此书。特别感谢石涛声研究员在本书的素材收集和整理上所做的大量工作,本书的大部分内容都是在石涛声所整理的素材基础上完成的。李昕负责全书的技术架构、章节组织、评审和全书的校订工作。本书的作者团队还包括Filecoin资深工程师王麟、王钞、李涛、李君龙等。王钞修订和审阅了原理篇的大部分章节;李涛和李君龙作为Venus的核心开发者,主要负责实现篇的修订和审阅;王麟负责拓展篇的编写和审阅。本书的许多工作是大家在业余时间完成的,是大家通力协作、反复讨论、仔细校对的成果。感谢大家的协作精神和奉献精神。

在本书的发起和写作过程中,得到了焜耀研究院主任张成龙先生的大力支持。正是张成龙先生建立和推崇的“价值、共建、共享、荣耀”文化理念,引导大家在本书的编写过程中从价值出发,共同努力,推出一本与大家共享知识和理念的书籍,实现彼此的荣耀。感谢张成龙先生的指导和指引。另外,郝梓言女士在本书的写作过程中做了很多认真细致的协调和推进工作,感谢她一贯的支持和保障。

Web 3.0的知识体系浩如烟海,区块链和分布式存储的发展也日新月异。谨以此书献给我们最亲爱的家人,以及中国众多热爱新技术、追求Web 3.0和区块链技术的朋友们。


目录

推荐序

前 言

致 谢

原理篇 Filecoin原理与设计

第1章 Filecoin基础 2

1.1 Filecoin简介 2

1.2 Filecoin的使命 4

1.3 Filecoin网络基础和基本概念 6

1.4 本章小结 9

第2章 Filecoin的技术发展 10

2.1 站在巨人的肩膀上 10

2.2 《Filecoin白皮书》和技术演进 14

2.2.1 《Filecoin白皮书》 14

2.2.2 Filecoin证明系统 14

2.2.3 重构共识机制 15

2.3 主网启动 16

2.4 本章小结 17

第3章 Filecoin的证明算法系统 18

3.1 分布式存储的安全性 18

3.1.1 世纪存储的挑战 19

3.1.2 去中心化存储的优势 20

3.1.3 去中心化存储网络中可能

存在的作弊行为 21

3.2 Filecoin的复制证明 21

3.2.1 前置概念 21

3.2.2 复制证明的实现 22

3.3 时空证明系统 25

3.3.1 前置概念 25

3.3.2 时空证明的实现 25

3.4 本章小结 29

第4章 Filecoin经济系统 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 模型化创建区块存力 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 一些实现细节 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协议 66

6.3.3 IPLD协议 66

6.3.4 libp2p协议 68

6.4 本章小结 68

第7章 Filecoin的存储和检索 70

7.1 存储的基础数据及构成 70

7.1.1 基础数据类型 70

7.1.2 存储市场合约 72

7.1.3 链上订单状态流转 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 存储过程中的状态变化 82

7.3 检索市场 84

7.3.1 检索市场运作概述 84

7.3.2 检索客户端 85

7.3.3 检索服务商 86

7.3.4 检索过程中的信任建立 87

7.3.5 检索过程中的状态变化 88

7.4 本章小结 89

实现篇 Filecoin的基础技术和实现

第8章 Filecoin区块链的节点实现 92

8.1 节点类型 92

8.2 节点本地存储 94

8.2.1 私钥存储 94

8.2.2 IPLD存储 95

8.3 节点的网络协议 96

8.4 节点的接口协议 97

8.5 节点的时钟 98

8.6 本章小结 99

第9章 Filecoin区块链的文件与

数据 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区块链 116

10.1 Filecoin区块链系统的组成 116

10.2 区块 117

10.2.1 区块的结构 117

10.2.2 TipSet 119

10.2.3 链管理器 120

10.2.4 区块生产者 120

10.3 消息池 121

10.4 链同步 122

10.4.1 链同步概述 123

10.4.2 链同步术语 123

10.4.3 链同步状态机 124

10.4.4 对等节点发现 125

10.4.5 步进区块验证 125

10.5 存储算力共识 127

10.5.1 存储服务提供者 128

10.5.2 区块生产者 128

10.5.3 算力 128

10.5.4 信标项 129

10.5.5 随机票 130

10.5.6 最小区块生产者 131

10.5.7 存储算力Actor 131

10.6 本章小结 133

第11章 Filecoin区块链的虚拟机 134

11.1 Filecoin虚拟机的基本概念 134

11.2 Actor接口 136

11.3 状态树 137

11.4 消息 137

11.4.1 Actor的嵌套调用 137

11.4.2 语法验证 137

11.4.3 语义验证 139

11.5 运行时环境 139

11.5.1 收据 139

11.5.2 Actor接口 139

11.5.3 系统调用 140

11.6 Gas费用 140

11.6.1 原理 140

11.6.2 实现 141

11.6.3 参数 141

11.7 系统Actor 144

11.8 解释器 147

11.9 Filecoin虚拟机的未来发展 149

11.9.1 虚拟机子系统的扩展

动力 149

11.9.2 虚拟机子系统的架构

设计 150

11.9.3 虚拟机子系统的扩展

需求 151

11.10 本章小结 152

第12章 Filecoin存储服务保障 153

12.1 扇区 153

12.1.1 生命周期 154

12.1.2 扇区质量 156

12.1.3 扇区封装 158

12.1.4 扇区故障 159

12.1.5 扇区恢复 159

12.1.6 增加存储 160

12.1.7 扇区升级 160

12.2 区块生产 161

12.2.1 出块系统 161

12.2.2 证明算法 162

12.2.3 账本管理 165

12.3 节点质押 166

12.4 证明子系统 167

12.4.1 扇区时空证明管理器 168

12.4.2 扇区复制证明管理器 169

12.5 本章小结 169

第13章 Filecoin的实现案例 170

13.1 为什么需要多种实现 170

13.2 Filecoin的四个实现实例 171

13.2.1 Lotus:广泛采用的Filecoin实现 171

13.2.2 Venus:Filecoin集群软件 173

13.2.3 Fuhon:Filecoin的C++

实现 174

13.2.4 Forest:Filecoin的Rust

实现 175

13.3 本章小结 175

第14章 Filecoin集群架构及搭建

基础 176

14.1 Lotus集群 176

14.1.1 组件介绍 176

14.1.2 Lotus集群硬件要求 178

14.1.3 Lotus的编译和安装 180

14.1.4 运行Lotus集群 182

14.2 Venus分布式存储服务 187

14.2.1 Venus集群的目标 188

14.2.2 Venus的分布式存储架构 188

14.2.3 组件介绍 189

14.2.4 链服务层组件部署 190

14.2.5 独立组件部署和接入 193

14.3 本章小结 197

拓展篇 Filecoin技术创新与

?生态探索

第15章 区块链世界中的Filecoin 200

15.1 对区块链世界的回馈 200

15.1.1 共识:PoW和PoS之外的

一点小创新 200

15.1.2 安全性挑战 201

15.1.3 社区治理的新尝试 203

15.2 与其他区块链的合纵连横 204

15.2.1 Filecoin的自我定位 204

15.2.2 与外部的互通互动 206

15.3 本章小结 208

第16章 Filecoin新技术探索 209

16.1 构建未来 209

16.2 新的PoRep尝试 211

16.3 SnarkPack:零知识证明的聚合

算法 212

16.3.1 背景 212

16.3.2 为什么需要SnarkPack 213

16.3.3 SnarkPack的实现 213

16.4 Winkle:抵御针对PoS系统的

长程攻击 215

16.4.1 概述 215

16.4.2 机制 215

16.4.3 总结 216

16.5 GossipSub:抗攻击的消息分发

协议 217

16.5.1 概述 217

16.5.2 常见的攻击类型 218

16.5.3 组网策略 218

16.5.4 评分体系 220

16.5.5 缓冲策略 220

16.5.6 总结 221

16.6 本章小结 221

第17章 Filecoin实现的发展和生态开发 222

17.1 Filecoin的实现需要适应生态的

发展要求 222

17.1.1 Filecoin节点实现是生态的

一部分 222

17.1.2 当前实现过于集中 223

17.1.3 模块化的架构 224

17.2 围绕存储建立生态 225

17.2.1 敏捷开发工具 225

17.2.2 Filecoin存储和检索工具

支持 225

17.2.3 Filecoin服务于NFT 226

17.3 本章小结 227