IPFS 原理与实践 (11):认识 IPFS 1.3.1

阅读数:1 2019 年 12 月 21 日 18:44

IPFS原理与实践(11):认识IPFS 1.3.1

(IPFS 的优势)

内容简介
这是一部从实现原理和工程实践两个维度深入讲解 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 的优势在于其强大的技术积淀、精巧的架构设计及强大的开发者生态。

  1. 技术优势

IPFS 技术可以分为多层子协议栈,从上至下为身份层、网络层、路由层、交换层、对象层、文件层、命名层,每个协议栈各司其职,又互相协同。图 1-6 所示为 IPFS 协议栈的构成。接下来我们逐一进行解释。

(1)身份层和路由层

对等节点身份信息的生成以及路由规则是通过 Kademlia 协议生成制定的,该协议实质上是构建了一个分布式哈希表,简称 DHT。每个加入这个 DSHT 网络的节点都要生成自己的身份信息,然后才能通过这个身份信息去负责存储这个网络里的资源信息和其他成员的联系信息。

IPFS原理与实践(11):认识IPFS 1.3.1

图 1-6 IPFS 协议栈

(2)网络层

比较核心,所使用的 Libp2p 可以支持主流传输层协议。NAT 技术能让内网中的设备共用同一个外网 IP,我们都体验过的家庭路由器就是这个原理。

(3)交换层

IPFS 吸取了 BitTorrent 的技术,并在其之上进行了再创新,自研了 BitSwap 模块。使用 BitSwap 进行数据的分发和交换,用户上传分享数据会增加信用分,分享得越多信用分越高;用户下载数据会降低信用分,当信用分低于一定值时,将会被其他节点忽略。简单来讲就是,你乐于分享数据,其他节点也乐于发送数据给你,如果你不愿意分享,那么其他节点也不愿意给你数据。

(4)对象层和文件层

这两层适合结合起来看,它们管理了 IPFS 上 80% 的数据结构,大部分数据对象都是以 Merkle-DAG 的结构存在,这为内容寻址和去重提供了便利。文件层具有 blob、tree、list、commit 等多种结构体,并采用与 Git 类似的方式来支持版本控制。

(5)命名层

具有自我验证的特性(当其他用户获取该对象时,将交换节点公钥进行验签,即验证公钥信息是否与 NodeID 匹配,从而来验证用户发布对象的真实性),并且加入了 IPNS 这个巧妙的设计使得哈希过后的内容路径名称可定义,增强可阅读性。

新旧技术的更替无非两点:其一,能够提高系统效率;其二,能够降低系统成本。IPFS 把这两点都做到了。

图 1-7 是一个 IPFS 技术模块的和功能间的映射关系图,同时也是一个纵向数据流图。前文所描述的多层协议,每一层的实现都绑定在对应的模块下,非常直观。

协议实验室在开发 IPFS 时,采用了高度模块集成化的方式,像搭积木一样去开发整个项目。截至 2017 年,协议实验室主要精力集中在设计并实现 IPLD、LibP2P、Multiformats 等基础模块,这些模块服务于 IPFS 协议的底层。

Multiformats 是一系列散列函数和自描述方式(从值上就可以知道值是如何生成的)的集合,目前拥有多种主流的散列处理方式,用以加密和描述 NodeID 以及内容 ID 的生成。基于 Multiformats 用户可以很便捷地添加新的哈希算法,或者在不同的哈希算法之间迁移。

IPFS原理与实践(11):认识IPFS 1.3.1

图 1-7 IPFS 模块关系图

LibP2P 是 IPFS 模块体系内核心中的核心,用以适配各式各样的传输层协议以及连接众多复杂的网络设备,它可以帮助开发者迅速建立一个高效可用的 P2P 网络层,非常利于区块链的网络层搭建。这也是 IPFS 技术被众多区块链项目青睐的缘由。

IPLD 是一个转换中间件,将现有的异构数据结构统一成一种格式,方便不同系统之间的数据交换和互操作。当前,IPLD 已经支持了比特币、以太坊的区块数据。这也是 IPFS 受到区块链系统欢迎的另一个原因,IPLD 中间件可以把不同的区块结构统一成一个标准进行传输,为开发者提供了简单、易用、健壮的基础组件。

IPFS 将这几个模块集成为一种系统级的文件服务,以命令行(CLI)和 Web 服务的形式供大家使用。

最后是 Filecoin,该项目最早于 2014 年提出,2017 年 7 月正式融资对外宣传。Filecoin 把这些应用的数据价值化,通过类似比特币的激励政策和经济模型,让更多的人去创建节点,去让更多的人使用 IPFS。

本节只对 IPFS 的技术特性进行了概要介绍,每个子模块的细节将在原理篇中做深度详解。

  1. 社区优势

协议实验室由 Juan Benet 在 2014 年 5 月创立。Juan Benet 毕业于斯坦福大学,在创建 IPFS 项目之前,他创办的第一家公司被雅虎收购。2015 年,他发起的 IPFS 项目在 YCombinator 孵化竞赛中拿到了巨额投资,并于 2017 年 8 月底,完成了 Filecoin 项目的全球众筹,在 Coinlist(协议实验室独立开发、严格遵从 SAFT 协议的融资平台)上共募集了 2.57 亿美金。如图 1-8 所示,协议实验室具有强大的投资者和开发者社区。

IPFS原理与实践(11):认识IPFS 1.3.1

图 1-8 协议实验室的投资人和机构

IPFS 的社区由协议实验室团队维护,到目前为止,开发者社区已经拥有上百位代码贡献者和数十位核心开发人员,如图 1-9 所示。IPFS 目前已经发布了 30 余个版本迭代,开发进度一直保持良好。

IPFS原理与实践(11):认识IPFS 1.3.1

图 1-9 IPFS 开发者社区

同时,协议实验室官方也授权了部分社区(IPFS Community)中的 Co-Organizer 牵头全球性的推广交流活动。目前,已在美国芝加哥、美国华盛顿、英国伦敦、印度德里、哥斯达黎加圣何塞、巴西圣保罗、西班牙巴塞罗那、加拿大蒙特利尔、德国柏林以及中国的北京、深圳、福州等数十个城市开展了社区自治的 Meetup 线下活动,拥有来自世界各地广泛的支持者。

IPFS原理与实践(11):认识IPFS 1.3.1

购书地址 https://item.jd.com/12665074.html?dist=jd

评论

发布