互联网推动着人类的发展。在过去的80年里,计算机改变了人类的生活方式,互联网已经演进成为人类的另一套“神经系统”。如今,人类的大多数活动都与网络相关联,要么借助计算机完成,要么通过网络来传输信息。我们也似乎正在从计算前文明向计算后文明过渡。在过去的 25 年里,人类打造了一套超级强大的系统:Web。通过Web,人们能够创建应用程序并与世界分享一切,这赋予了人类超越以往任何时期的能力。Web一直在演进,从之前的Web 2.0,到现在的Web 3.0。在过去的 5 年里,Web 3.0 将可验证性、弹性和密码经济学引入了互联网的基础技术之中。今天,我们正处于过渡时期:我们正在构建未来的平台。货币、交易、合同、计算、数据存储、分发和带宽都正在被新的公开激励算法和网络所改变。Filecoin 是这些新兴网络之一,也是未来的Web 3.0平台之一。
区块链使互联网去中心化成为可能。通过大约 30 年的发展,互联网极大地改变了世界。互联网本身也从最初的静态桌面设计、以推送信息为主,逐步演进到Web 2.0,多数网络应用提供交互式体验,依靠用户自己生成网络内容,从而为我们带来了Uber、Airbnb、Facebook 和 Instagram。Web 2.0 的兴起主要由三个核心创新底层推动:移动、社交和云。在Web 2.0发展的同时,我们还看到Web更加集中。互联网由亚马逊AWS、微软Azure、谷歌、阿里巴巴和腾讯云等大型云服务提供商主导。网络用户没有数据所有权,他们使用网络的同时必须信任这些企业。区块链技术给网络世界带来了改变,并为互联网带来了颠覆性的属性—开放性、去中心化、无须信任、可验证和无须许可,为Web 3.0的发展提供了可能。这些已经在使用公共区块链的价值交易(比特币)和可编程计算(以太坊中的智能合约)中得到了很好的
证明。
Filecoin标志着可验证的存储网络的诞生。Filecoin是Web 3.0的主要组成部分之一,专注于互联网基础设施三大支柱之一的去中心化存储。与云存储不同,Filecoin是一个去中心化、人人可参与、通证激励、可验证、算法定义的存储市场。Filecoin重视数据价值,消除了数据存储的中间环节,并开创性地提供了可验证的数据检索。Filecoin采用独有的技术,保证不可变和可验证的存储,并能够及时发现存储错误。Filecoin采用基于算法的激励模型,供客户和存储服务提供商自由加入。在这样一个能够自由竞争的网络中,消费者可以享受更低的价格,拥有更多选择。其去中心化还为新型应用实现无须人工干预的自动存储和内容交互提供了可能。
Filecoin是增长最快的存储网络。Filecoin社区于2021年10月15日庆祝了Filecoin主网一周年。下面这些数字反映了Filecoin一周年的实际发展情况:
12EiB的总网络存储能力。
3362家Filecoin存储服务提供商。
230多个组织建立在网络上。
465个新项目进入生态。
GitHub上有7500多个项目贡献者。
10?000多名开发者参加黑客马拉松。
Filecoin生态系统以令人难以置信的速度不断发展着,这些与敬业的社区成员的努力分不开,我个人也非常荣幸与这些社区成员合作,共同推进Filecoin的发展。
值得一提的是,Filecoin主网存储能力在升级到Hyperdrive版本(Filecoin v13网络升级)后增长更快,每天大约增长50PiB。它不仅是最大和增长最快的分布式存储网络,也是所有去中心化和中心化网络中增长最快的存储服务之一。
Filecoin也在持续演进中。第一版《Filecoin白皮书》发布距今已经8年,Filecoin项目正式启动也已经5年了。伟大的工作需要时间来验证成果。想实现一个安全且可行的去中心化和可验证的存储网络,需要面对许多挑战。Filecoin主网包含了许多现实的创新和创造性的实践。Filecoin是第一个通过PoRep和PoSt提供存储证明的存储网络,这是去中心化网络的关键属性。Filecoin也是第一个拥有有用共识的区块链。块生成的算力实际上是数据存储和检索的真正存储容量。Filecoin设计了一种有效的经济学来维持存储服务质量。所有这些都经过精心设计,安全且可行。然而,在主网上线之后,要建立一个成熟的去中心化存储市场还有很长的路要走。这条路上还要进行很多研究,包括更高效的证明机制和算法、ZiB的可扩展性,甚至YiB存储容量支持、检索市场建立、智能合约支持等。
本书是学习Filecoin或进行去中心化存储网络开发的优秀参考资料。非常感谢IPFSForce团队撰写本书。本书汇集了许多重要的Filecoin研究、规范和实现,也体现了IPFSForce团队对Filecoin开发的深刻理解和长期的跟进与贡献。本书的组织结构清晰,不仅给出了全面透彻的介绍,而且提供了很多关于Filecoin设计原理的细节,包括Filecoin预期共识、加密经济学和存储证明,这些都很关键。我建议技术工程师阅读这些内容以了解该网络的基本原理。本书的实现篇描述了很多复杂系统的构建细节,为想要加入Filecoin网络的读者提供了很好的支持。最后给出的关于Filecoin的思考,激励人们继续思考和期待Filecoin的未来。
Filecoin作为去中心化存储网络,其使命是存储人类最重要的信息,这是我们从Filecoin项目之初就设定的。要使Filecoin成为存储服务提供者、用户、开发人员、企业家和其他Web 3.0远见者的最佳存储网络,还有很多工作要做。我们对有众多生态系统合作伙伴参与并合作充满信心,让我们共同引领通往Web 3.0世界的道路。
Juan Benet
Filecoin 创始人
协议实验室创始人
推荐序
前 言
致 谢
原理篇 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