已阅读
IPFS——志在打造新一代互联网的新型超媒体传输
1、 IPFS是什么?
2014年,毕业于斯坦福大学的美国青年Juan Benet(胡安·贝尼特)创建了协议实验室(Protocol Labs),专注于互联网研究、开发和部署。2015年5月,协议实验室发布了志存高远的星际文件系统(IPFS)。
IPFS(InterPlanetary File System)即星际文件系统,是一种基于内容寻址、版本化、点对点的新型超媒体传输协议。
IPFS集合借鉴了DHT分布式哈希表、BitTorrent块交换协议、Git版本控制、SFS自证明文件系统等技术优点,打造了一个开源、去中心的全新基础底层网络。
IPFS允许网络中的参与者互相存储,索取和传输可验证的数据,相当于存储领域的airbnb。IPFS还有一个更宏伟的目标,即打造一个更加开放、快速、安全的互联网,补充和完善现有的基于HTTP协议的互联网,甚至最终取代它,从而成为新一代互联网。
2、 对标HTTP的IPFS能解决什么痛点?
(1)居功至伟同时也存在痛点的HTTP协议
我们目前使用的互联网,可以分为计算、网络、存储三个部分,HTTP协议主要承担起了网络部分的职责。HTTP协议诞生并推广使用二十多年来,已经成为了现实生活中不可或缺的基础设施,在互联网推广普及、加速人类知识进步等方面发挥了不可估量的作用,大幅提升了整个世界的运转效率。
另一方面,HTTP的架构特点使其不可避免地存在着带宽浪费、低效、成本高、数据删除频繁、主干网依赖严重、DDOS攻击泛滥等问题。这也让其作为作为人类文明平衡器和创新加速器的作用正在日益受到威胁。
(2)IPFS为解决HTTP的痛点而生
针对HTTP服务器承载压力大,容易收到DDOS攻击的问题。IPFS的存储方式是去中心化分片的分布式存储,黑客无法攻击,文件不易丢失,安全有保障。
针对HTTP中心化服务网络容易丢失文件、网页的问题。IPFS采用P2P 网络拓扑,全网域的计算机都可以成为存储节点,就近分布式存储大大提高了网络效率。
针对HTTP服务器较高的运行成本和带宽成本问题;IPFS的分布式存储和点对点传输能极大的降低服务器存储成本,也降低了服务器的带宽成本。
针对 HTTP的客户网络可能出现的延迟问题。IPFS可以极大的加快网络访问速度,网络访问本地化,体验感会明显提升。
3、 IPFS的技术架构
IPFS架构分为八层:身份层、网络层、路由层、交换层、对象层、文件层、命名层、应用层。每个协议栈各有职责,又相互搭配相互协作。
身份层及路由层:身份层和路由层属于捆绑性质。对等节点身份信息的生成以及路由规则是通过Kademlia协议生成制定,KAD 协议实质是构建了一个分布式松散Hash表,简称 DHT,每个加入这个DHT网络的人都要生成自己的身份信息,然后才能通过这个身份信息去负责存储这个网络里的资源信息和其他成员的联系信息。
交换层:交换层模拟了P2P网络,并创建中心服务器,当服务器登记用户请求资源时,让请求同样资源的用户形成一个小集群 Swarm,在这里分享数据。在中心化的处理方式中这种方式有弊端,因为服务器是由中心化的服务提供商统一维护,如果出现了了故障、宕机时,下载操作无法进行。
对象层及文件层:对象层和文件层需要结合来谈,它们管理的是IPFS上80%的数据结构,大部分数据对象都是以 Merkle DAG的结构存在,这为内容寻址和去重提供了便利;文件层是一个新的数据结构,和DAG并列,采用Git一样的数据结构来支持版本快照。
命名层:命名层具有自我验证的特性(当其他用户获取该对象时,使用指纹公钥进行验签,即验证所用的公钥是否与NodeId(节点编号)匹配,这验证了用户发布对象的真实性,同时也获取到了可变状态),并且加入了IPFS这个设计来使得加密后的DAG对象名可定义,增强可阅读性。
应用层:IPFS核心价值就在于其上运行的应用程序,可以利用它类似CDN的功能,在成本很低的带宽下,去获得想要的数据,从而提升整个应用程序的效率。
网络层:网络层属于IPFS架构中的核心之一,使用的 LibP2P可以支持任意传输层协议。NAT技术能让内网中的设备共用同一个外网 IP,家庭路由器使用的就是这个原理。
4、 IPFS的模块家族
协议实验室在开发IPFS时,将不同功能的部件以采用了高度模块化的方式进行开发。IPFS实际上包括了5个独立又联系紧密的模块项目:IPFS、Filecoin、LibP2P、IPLD、Multiformats,它们一起组成了IPFS整体项目的模块家族。
其中,IPFS是分布式超媒体传输协议、分布式文件系统;Filecoin是IPFS的去中心化激励层(后文将详细介绍)。
下面主要介绍一下另外3个项目:
(1)LibP2P
LibP2P是IPFS模块体系内核心中的核心,用以适配各式各样的传输层协议以及连接众多复杂的网络设备,它可以帮助开发者迅速建立一个高效可用的P2P网络,非常利于区块链的网络层搭建。
LibP2P类似现实世界的快递公司,负责分发数据和查找数据(发现节点、连接节点、发现数据、传输数据),它综合了各种协议、框架,连接着千百万个节点,使用它,就能实现去中心化的传输需求。
(2)IPLD
IPLD是一个转换中间件,将现有的异构数据结构统一成一种格式,方便不同系统之间的数据交换和互操作。当前,IPLD已经支持了比特币、以太坊的区块数据。这也是IPFS收到区块链系统欢迎的另一个原因,IPLD中间件可以把不同的区块结构统一成一个标准进行传输,为开发者提供了简单、易用、健壮的基础组件。
实际上,我们可以将IPLD理解为一个跨链、跨系统结构,承担起了连接各种不互通系统数据孤岛的桥梁作用。
(3)Multiformats
Multiformats是一系列散列函数和自描述方式的集合,目前拥有多种主流的散列处理方式,用以加密和描述NodeID以及内容ID的生成。基于Multiformats用户可以很快捷地添加新的哈希算法,或者在不同的哈希算法之间迁移。
Multiformats 项目是为IPFS协议专门打造的,允许协议相互操作,可以保持协议灵活度、并可扩展、可升级,即打造一个永不过时的系统,目前应用在IPFS和libp2p模块上,在IPFS体系中主要负责身份的加密和数据的自我描述,是未来安全系统的协议集合,通过增强自我描述的格式值来实现,自描述格式可以让系统可互相协作和升级。
5、IPNS是什么?
星际命名系统(IPNS)是用于创建和更新IPFS内容的可变链接的系统。由于IPFS中的对象是内容寻址的,因此每次内容的地址都会改变。这在很多情况下很有用,但它很难获得最新版本的内容。
IPNS中的名称是公钥的哈希值。它与包含有关其链接到的哈希的信息的记录相关联,该哈希由相应的私钥签名。可以随时签署和发布新记录。
使用IPNS(去中心化命名系统),每个文件都可以被命名为易读的名字(由对机器友好转为对人类友好)。通过搜索,就能很容易地找到想要查看的文件。
6、 IPFS的工作原理和机制
(1) IPFS为每⼀个文件分配一个独一无⼆的哈希值(文件指纹:根据文件的内容进行创建),即使是两个文件内容只有1个比特的不相同,其哈希值也不相同,这个方式使得IPFS可以支持基于文件内容进行寻址;
(2) IPFS在整个网络范围内去掉重复的文件,并且为文件建立版本管理;
(3) 查询文件时,IPFS网络根据文件的哈希值(全网唯一)进行查找;
(4) IPNS 将哈希值映射为容易记的名字;
(5) 每个节点除了存储自己需要的数据,还存储了一张哈希表,用来记录文件存储所在的位置,用来进行文件的查询下载。
IPFS实质上为我们解决的最重要问题是:数据存储。它能够极大的降低数据存储的成本,提升数据下载速度。
7、 IPFS的使用场景
(1) 作为一个挂载的全局文件系统,挂载在/ipfs和/ipns下;
(2)作为一个挂载的个人同步文件夹,自动的进行版本管理、发布,以及备份任何的写入;
(3) 作为一个加密的文件或者数据共享系统;
(4) 作为所有软件的版本包管理者;
(5) 作为虚拟机器的根文件系统;
(6)作为VM的启动文件系统 (在管理程序下);
(7)作为一个数据库:应用可以直接将数据写入Merkle DAG数据模型中,获取所有的版本,缓冲,以及IPFS提供的分配;
(8)作为一个linked(和加密的)通信平台;
(9)作为一个为大文件的完整性检查CDN(不使用SSL的情况下);
(10)作为一个加密的CDN;
(11)在网页上,作为一个web CDN;
(12)作为一个links永远存在新的永恒的Web;
8、 IPFS的落地应用
IPFS的实际应用包括网络视频平台、互联网信息平台、数据存储等,目前的一些落地应用包括OpenBazaar、Brave浏览器、cloudflare、textile等数十个应用。