猜你喜欢
IPFS原理与实践

IPFS原理与实践

书籍作者:董天一 ISBN:9787111628804
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:6052
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

这是一部从实现原理和工程实践两个维度深入讲解IPFS和Filecoin的著作。作者是中文社区内非常有影响力的三位IPFS/Filecoin布道者,本书得到了IPFS&FileCoin创始人以及IPFS官方(协议实验室)的高度认可和强烈推荐。


为*大化满足读者需求,书中不仅介绍IPFS技术细节、区块链相关知识、Filecoin项目技术细节,还加入了大量作者们在开发中的经验和技巧。为了适配当下及未来较长时间内读者的实际使用环境,书中所有案例都是基于生态链中较新的软件开发工具和前沿的软件开发技术编写的。


本书分为三大部分:

第一部分 基础篇(第1章)

全面介绍了IPFS的源起,概念、优势和应用领域,旨在帮助读者了解IPFS相关基础背景知识,从宏观层面认识IPFS技术所具有的创新性。


第二部分 原理篇(第2~5章)

旨在帮助读者深入理解IPFS和Filecoin的运行原理与工作机制。首先深入分析了分布式哈希表、块交换协议、版本控制、自验证文件系统Merkle DAG和Merkle Tree等底层基础知识,然后对IPFS协议栈中包含的7层子协议了进行了剖析,接着解析了Multi-Format、libp2p、IPLD三大IPFS核心模块,最后用了一整章的篇幅详细剖析了Filecoin项目。


第三部分 实战篇(第6~8章)

以工程化的方式,从基础至进阶,介绍了IPFS技术的实际使用,包括安装、配置、交互、入网、API、内容发布、数据保存、私网搭建等内容,之后通过两个不同风格的实际项目案例向读者展示了基于不同语言所实现的IPFS协议栈的使用方法。

作者简介

董天一(飞向未来)
毕业于北京大学软件工程专业,资深IPFS技术专家、架构师,国内IPFS、Filecoin技术领域的先驱者和布道者,过去两年在国内举办相关线下活动30余场,对 IPFS 技术在中国的推动和普及起到了关键作用,在 IPFS 社区享有很高的声誉。
现就职于电商行业,在中型电商系统的架构、设计与实现方面有丰富的经验,擅长高并发、微服务、ServiceMesh等技术。曾就职于Oracle亚洲研发中心,专注于数据库相关的设计与开发工作。
资深区块链技术专家,早期的参与者,对区块链和分布式存储技术有着深刻的认识和见解,为多家大型上市公司提供过区块链技术的咨询和培训服务。
戴嘉乐
资深IPFS技术专家,国内首批IPFS技术布道师,“中国IPFS开发者沙龙”系列活动创办人。
毕业于电子科技大学软件工程专业,曾担任百度地图高级后端研发工程师,参与构建过高并发下的高可用分布式后端系统和基于地理围栏和实时通勤路线的位置推荐系统。
黄禹铭
国内IPFS和Filecoin领域早期的研究者、布道者和投资人。新加坡国立大学博士生,主要研究方向为分布式计算和区块链。目前的研究兴趣包括区块链的共识机制、证明机制和激励模型。

编辑推荐
适读人群 :1.区块链技术工程师和区块链技术爱好者2.对互联网新技术感兴趣的技术工程师
(1)本书得到了IPFS和FileCoin创始人兼协议实验室创始人Juan Benet高度评价并作序推荐。
(2)三位作者是国内首批IPFS/Filecoin技术的布道者,坚持至今,在社区剖有影响力。
(3)作者们累计在中国各地(包括香港)举办IPFS/Filecoin相关的线下沙龙30余场,为IPFS/Filecoin在中国的普及和推广做了巨大贡献。
(4)本书内容相当扎实,从实现原理和工程实践两个维度深入讲解IPFS/Filecoin,得到了IPFS官方(协议实验室)的高度认可和推荐。
前言
缘起
我们在2017年下半年至2018年上半年期间,牺牲了大量的业余时间,一直在做IPFS这门新兴技术的相关解读、线下MeetUp工作。我们在知乎专栏和微信公众号上建立的《IPFS指南》是中国第一个系统、全面地介绍这门技术的中文资料站。机械工业出版社华章公司的杨福川老师在第一时间找到我们,希望我们能够为国内开发人员写一本IPFS技术相关的图书,方便国人更好地理解并应用这门技术。于是,便有了你手中的这本书。
为什么要写这本书
IPFS这门技术诞生于2014年,由协议实验室(Protocol Labs)创建。但是,直到2017年年中才逐渐走入大众视野,因为其能与区块链完美结合,所以使得其成为近几年最火热的技术之一。然而,国内却没有与IPFS技术相关、利于国人阅读、知识体系结构相对系统全面的中文学习资料。因此,我联系了当时在这个领域钻研摸索最多的几位布道者和专家,一起撰写了这本书,希望能帮助国内IPFS技术爱好者更加快速地学习、掌握、应用这门技术。
IPFS这门技术还在不断演化中,它引导的是一场真正的网络协议革命,是一种全球化思维的碰撞,是一种突破传统的海量数据共享的模式。IPFS可能不是这场革命的导火索,但是我认为,它至少能带领大家去学习和认识这种思维,这是一件非常有意义的事情。
读者对象
本书适合有一定区块链常识和基础,有软件开发能力,但是不了解IPFS,想学习IPFS的技术原理,并基于IPFS做相关开发工作的读者。主要包含以下人员:
IPFS技术爱好者;
网络协议技术爱好者;
分布式存储技术爱好者;
区块链技术爱好者;
区块链领域从业者;
开设相关课程的大专院校师生。
本书特色
首先,IPFS是在区块链技术蓬勃发展的情况下得到广泛认可的,本书除了针对IPFS技术本身进行讲解以外,还增加了大量区块链相关知识作为铺垫和补充,包括单独设立第5章来重点介绍IPFS的激励层—Filecoin区块链项目。
其次,本书不仅介绍了IPFS技术本身的细节,还加入了大量笔者在开发中总结的经验和技巧,并搭配了相关生态链中较新的软件开发工具和前沿的尖端技术。在技术深度和广度两个方面都兼顾得比较妥当,有明显的层次感。
再次,本书提供了大量的项目实例,这些项目实例能够帮助读者更好地理解IPFS技术和应对一些业务场景。
最后,本书是一本相对全面和系统地解读了IPFS和Filecoin技术的书籍,也是一本国内由相关领域中最早期的布道者、专家合力编写的中文权威书籍。
如何阅读本书
本书分为三大部分:
第1部分为基础篇,包括第1章。简单地介绍了IPFS的概念、优势和应用领域,旨在帮助读者了解一些基础背景知识,并从宏观层面来认识IPFS技术所具有的创新性。
第2部分为原理篇,包括第2~5章。从内部详细剖析IPFS的底层基础、协议栈构成,以及libp2p、Multi-Format、Filecoin等模块。
第3部分为实战篇,包括第6~8章。以工程化的方式,从基础至进阶,讲解了IPFS技术的实际使用,并通过讲解两个不同风格的项目案例,让读者了解不同语言实现的IPFS协议栈。
其中,第3部分以接近实战的实例来讲解工程应用,相比于前两部分更独立。如果你是一名资深用户,已经理解IPFS的相关基础知识和使用技巧,那么你可以跳过前两个部分,直接阅读第3部分。如果你是一名初学者,则务必从第1章的基础理论知识开始学习。
勘误和支持
由于作者的水平有限,加之IPFS等相关技术更新迭代快,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,我们创建了存放本书相关资料和便于信息反馈的Github仓库https://github.com/daijiale/IPFS-and-Blockchain-Principles-and-Practice。如果大家在阅读本书的过程中遇到任何问题,可以通过上述渠道以Issue的形式反馈给我们,我们将在线上为读者提供解答。期待能够得到你们的真挚反馈。本书的相关源码和资料文件除了可以从华章网站下载外,还可以从上述渠道下载。
致谢
首先要感谢协议实验室开创的这款具有划时代意义的新型网络协议。
其次要感谢机械工业出版社华章公司的杨福川、孙海亮、李良三位老师为本书顺利出版所付出的努力,没有他们的支持,本书无法如期顺利完成。
同时感谢知乎专栏《IPFS指南》及国内因IPFS技术自发组织而成的众多爱好者社区,他们对IPFS技术的执着和探索是我们创作的动力,在和他们的交流中我们发现了本书的价值和创作素材。
感谢我的合作者董天一前辈,他在计算机系统、软件工程、经济学基础、博弈论、区块链存储方面学识渊博,使我在与他合作著书的过程中不断进步。同时,董天一前辈对本书的审稿和校稿工作也做出了重要的贡献。
感谢我的另一位合作者黄禹铭,他在区块链学术领域积累丰厚,对本书的众多技术进行了详细的原理解读和分析,尤其是在第1章、第2章、第4章和第5章。
感谢新加坡国立大学Andrew Lim教授对本书的大力支持以及TangJing助理教授对我们技术上的指导。
谨以此书献给我最亲爱的家人,以及中国众多热爱IPFS和区块链技术的朋友们。

戴嘉乐
目录
推荐序
赞誉
前言
基础篇 认识IPFS
第1章 认识IPFS2
1.1 IPFS概述2
1.1.1 IPFS的概念和定义2
1.1.2 IPFS的起源4
1.2 IPFS与区块链的关系8
1.2.1 区块链基础8
1.2.2 区块链发展10
1.2.3 IPFS为区块链带来了什么改变14
1.2.4 Filecoin:基于IPFS技术的区块链项目15
1.3 IPFS的优势与价值16
1.3.1 IPFS的优势16
1.3.2 Filecoin与其他区块链存储技术的对比21
1.4 IPFS的应用领域23
1.5 本章小结25
原理篇 理解IPFS
第2章 IPFS底层基础28
2.1 分布式哈希表(DHT)28
2.1.1 Kademlia DHT29
2.1.2 Coral DSHT36
2.1.3 S/Kademlia DHT38
2.2 块交换协议(BitTorrent)41
2.2.1 BitTorrent术语含义42
2.2.2 P2P块交换协议43
2.2.3 阻塞策略44
2.3 版本控制(Git)46
2.4 自验证文件系统(SFS)54
2.4.1 SFS设计55
2.4.2 自验证文件路径57
2.4.3 用户验证58
2.4.4 密钥撤销机制58
2.5 Merkle DAG和Merkle Tree59
2.5.1 Merkle Tree60
2.5.2 Merkle DAG63
2.6 本章小结65
第3章 IPFS协议栈66
3.1 身份层(Identity)67
3.2 网络层(Network)68
3.3 路由层(Routing)69
3.4 交换层(Exchange)71
3.4.1 BitSwap协议71
3.4.2 BitSwap信用体系75
3.4.3 BitSwap策略75
3.4.4 BitSwap账单76
3.5 对象层(Object)77
3.6 文件层(File)79
3.7 命名层(Naming)83
3.7.1 IPNS:命名以及易变状态83
3.7.2 自验证命名83
3.7.3 人类友好名称84
3.8 本章小结85
第4章 IPFS模块解析86
4.1 Multi-Format86
4.1.1 Multi-Hash87
4.1.2 Multi-Base90
4.1.3 Multi-Addr92
4.1.4 Multi-Codec95
4.1.5 Multi-Stream 98
4.2 libp2p98
4.2.1 libp2p的功能99
4.2.2 libp2p核心原理101
4.2.3 libp2p的用途108
4.3 IPLD109
4.3.1 IPLD数据模型110
4.3.2 内容识别符(CID)112
4.3.3 CID解码规则115
4.4 本章小结116
第5章 Filecoin117
5.1 Filecoin项目简介117
5.1.1 Filecoin项目的起源117
5.1.2 Filecoin 项目的价值118
5.1.3 Filecoin的价值交换市场119
5.1.4 优化互联网的使用120
5.2 Filecoin与IPFS之间的关系120
5.3 Filecoin经济体系122
5.3.1 Filecoin 的分发与使用122
5.3.2 Filecoin 矿工收益结构123
5.4 Filecoin技术体系总览124
5.4.1 Filecoin系统基本概念125
5.4.2 Filecoin交易市场运行简介125
5.4.3 Filecoin区块链数据结构127
5.4.4 Filecoin 区块链运行原理129
5.5 去中心化存储网络协议(DSN)130
5.5.1 Put、Get、Manage操作130
5.5.2 拜占庭问题与存储错误133
5.5.3 DSN协议中的两类基础操作134
5.5.4 存储节点操作协议138
5.5.5 检索节点操作协议141
5.5.6 网络操作协议143
5.6 Filecoin交易市场145
5.6.1 存储市场146
5.6.2 检索市场148
5.7 Filecoin 区块链共识机制151
5.7.1 共识机制概述151
5.7.2 共识机制要解决的3个问题152
5.8 复制证明(PoRep)和时空证明(PoSt)157
5.8.1 存储证明的6种定义157
5.8.2 存储证明成员159
5.8.3 复制证明(PoRep)160
5.8.4 时空证明(PoSt)163
5.8.5 复制证明 PoRep和时空证明PoSt的实现164
5.9 网络攻击与防范173
5.10 其他特性176
5.10.1 Filecoin智能合约176
5.10.2 Bridge互联系统177
5.11 本章小结177
实战篇 应用IPFS
第6章 IPFS开发基础180
6.1 安装IPFS180
6.1.1 通过安装包安装180
6.1.2 通过Docker安装183
6.1.3 通过ipfs-update安装184
6.2 IPFS仓库配置初始化185
6.2.1 初始化185
6.2.2 访问配置文件186
6.3 与IPFS文件系统进行交互190
6.4 加入IPFS网络环境193
6.5 与HTTP Web交互195
6.6 API使用 196
6.6.1 IPFS命令行用法197
6.6.2 IPFS协议实现扩展200
6.6.3 IPFS端API200
6.7 本章小结202
第7章 IPFS开发进阶203
7.1 在IPFS中发布动态内容203
7.2 持久保存IPFS网络数据206
7.3 操作IPFS Merkle DAG208
7.3.1 创建Merkle DAG结构208
7.3.2 组装子块数据209
7.3.3 块与对象的区别210
7.3.4 操作Block210
7.3.5 操作Object211
7.4 IPFS Pubsub功能的使用212
7.5 私有IPFS网络的搭建与使用215
7.5.1 环境准备216
7.5.2 共享密钥216
7.5.3 上传密钥至节点217
7.5.4 添加启动节点217
7.5.5 启动并查看各个节点217
7.6 本章小结219
第8章 IPFS项目实战220
8.1 利用go-ipfs优化Git分布式服务220
8.1.1 依赖安装221
8.1.2 初始化Git仓库222
8.1.3 IPFS网络挂载223
8.1.4 用Git从IPFS网络克隆仓库225
8.2 基于js-ipfs搭建一个流媒体播放系统227
8.2.1 构建Node.js开发环境227
8.2.2 使用Webpack构建项目229
8.2.3 开发播放器模块231
8.2.4 开发状态栏模块233
8.2.5 引入js-ipfs模块235
8.2.6 实现拖拽上传237
8.2.7 从IPFS中读取流媒体至播放器238
8.2.8 处理流媒体播放状态240
8.2.9 开发总结241
8.3 本章小结242
产品特色