首页 新手入门内容详情

史上最通俗易懂的IPFS小白入门指南

2020-05-23 76 IPFS搬运工

IPFS小白入门指南

IPFS(Inter Planetary File System即星际文件系统)是一种基于内容寻址、版本化、点对点的超媒体传输协议,允许网络中的参与者互相存储、索取和传输可验证的数据,对标http的新一代通信协议。IPFS的目标是打造一个更加开放、快速、安全的互联网。


IPFS产生的背景

2014年5月,斯坦福大学计算机硕士毕业的Juan Benet创立了协议实验室(Protocol Lab)。协议实验室是一个网络协议的研究、开发和部署的实验室,致力于构建协议、系统和工具来改进互联网的工作方式,并关注如何存储、定位和传输信息。协议实验室的目标是用新的技术突破、伟大的用户体验设计和开源的方法来解决传统互联网的种种弊端,并创建了IPFS、Filecoin、libp2p、IPLD、Multiformats等五个项目。


IPFS入门


在介绍IPFS之前,大家可以先看下协议实验室官方发布的视频。



IPFS概述

IPFS(InterPlanetary File System即星际文件系统)是一种基于内容寻址、版本化、点对点的超媒体传输协议,是一个P2P的分布式文件系统,对标http的新一代通信协议,目标是打造一个更加开放、快速、安全的互联网。

IPFS可以被视为一个单一的BitTorrent群,交换对象在一个Git仓库,提供了一种高通量处理的依托于内容寻址超链接的块存储模型。对于一个存放在IPFS网络的文件资源,通过这个文件资源的内容生成的唯一编码去访问。IPFS可以讲数据分片存储到分布式的存储节点,与BitTorrent类似,在访问时不需要关系存储在哪里,可以从多个存储节点分片获取。

IPFS继承了Git版本管理技术,从而可以使用内容的升级变化。为了实现真实性、不可篡改性,IPFS维护一个分布式的哈希表,实现一种Merkle DAG的数据结构,还结合了自我证明单命名空间。IPFS中没有单节点故障,且众多节点无须信任彼此。

所以,IPFS是集合了BitTorrent—BT协议技术、Git—版块化技术、DHT—分布式哈希表、SFS—自认证命名技术这四个成熟技术组合形成的一种通讯协议方式,允许网络中的参与者互相存储、索取和传输可验证的数据。IPFS的目标是取代HTTP,打造一个更加开放、快速、安全的互联网。


HTTP协议的弊端

我们现在使用互联网都是在http或https协议下运行的,http协议也就是超文本传输协议,是用于从万维网服务器传输超文本到本地浏览器的传送协议,从1990年提出至今已经近30年了,他对于目前互联网的爆炸性成长居功至伟,成就了互联网的繁荣。 

但是HTTP协议是基于C/S架构下的互联网通信协议,基于主干网络中心化运行的机制,也存在诸多弊端。

IPFS入门指南

首先,互联网上的数据经常因为文件被删除或服务器关闭而永久被抹去。有人统计过目前互联网上的web页面平均保存寿命只有100天左右,我们经常看到一些网站出现“404错误”。近几年,新浪网盘、腾讯微云、金山快盘等网盘纷纷关闭,如果你不把数据下载到本地硬盘的话,你在网盘上的数据就会被清零。

IPFS提供了文件的历史版本回溯功能,可以很容易的查看文件的历史版本, 且数据无法删除,可以得到永久保存。


IPFS入门指南

 

其次,主干网络运行效率低,使用成本高。由于中心化的通讯模式导致所有终端都要从一个Web服务器查找数据,相同的文件会在不同的服务器上重复存储,这就要求服务器的带宽很大。使用HTTP协议每次需要从中心化的服务器下载完整的文件,速度慢、效率低。

IPFS是基于内容寻址的存储模式,相同的文件都不会重复存储,它会把过剩的资源挤压下来,包括存储空间都释放出来,数据存储成本就会降低。如果改用P2P的方式下载,带宽使用成本可以节省近60%。


IPFS入门指南

第三,主干网络并发机制制约互联网访问速度。这种中心化主干网络的模式也导致在高并发情况下网络访问时候的拥堵,最典型的就是春运抢购火车票以及双11剁手节的时候。

第四,中心化限制了web的成长。现在的互联网是由数百万个分布在世界各地的服务器构成的,是一个高度中心化的网络。在现有的http协议下,所有的数据都保存在这些中心化服务器上,互联网巨头们不但对我们的数据有绝对的控制权和解释权,各种各样的监管、封锁、监控一定程度上也极大的限制了创新和发展。
建立在去中心化的分布式网络上的IFPS很难被中心化管理和限制,互联网将更加开放。

IPFS入门指南

第五,HTTP对主干网络依赖严重,存在严重的安全隐患。所有数据存储在一个地方,为寻求规模效应,机房就会建设在一个地方,就会非常依赖一个主干节点,一旦“单点式”的中心被摧毁或者发生数据丢失、造假的情况,那么整个网络都会随之瘫痪,或者接收到错误的信息,用户的信息安全和隐私容易受到威胁。

为了支撑HTTP协议,服务器7*24小时开启,对于大流量公司,比如百度、腾讯、阿里等,投入大量资源维护服务器和安全隐患,防止DDoS、XSS、CSRF等攻击。主干网络受制于战争,自然灾害,中心服务器宕机等因素,都可能造成整个互联网中断服务。IPFS分布式存储可以极大的降低对中心主干网络的依赖。

IPFS入门指南

Juan Benet指出两个关键:“我们使用的是内容寻址的技术,也就是说内容可以从源服务器分离出来,并永久储存。这就意味着内容可以在距离用户非常近的地方储存和托管,甚至是储存在同一个房间里面。内容寻址还可以让我们校验数据,因为其他主机可能是不受信任的。一旦内容被下载到用户的设备之后,它就可以被无限期的保存。”

IPFS还可以解决困扰HTTP互联网多时的安全问题:内容寻址和内容签名技术可以保护基于IPFS的网站,杜绝DDoS攻击发生的可能。IPFS还可以归档重要的公共记录内容,避免网站终止运营所带来的损失。

IPFS的最后一个核心改进是去中心化的内容分布,这点可以让人们在分散的互联网服务(甚至是离线的情况)之下获取互联网的内容。“我们让网站和网页应用摆脱了源服务器的牵制。”Juan Benet解释,“它们可以按照比特币网络的模式进行分布。”这是HTTP无法做到的这一点,而且对于网络条件欠佳的地方和市郊地区来说是一个极大的好处。


IPFS包含的内容

节点身份。每一个IPFS节点都有一个独一无二的身份ID,利用节点的公钥生成的加密哈希,节点的活动都需要使用这个ID,就像是IPFS网络里面节点的身份证。

网络。IPFS节点要和网络里面成百上千的其他节点通讯,现实中的网络结构如此复杂,IPFS使用ICE NAT穿透技术来保障网络的连通性。

路由。IPFS网络的路由使用的事DHT,借鉴了S/Kademlia,使用一个节点可以快速地查找到其它节点。

数据交换协议。IPFS借鉴BitTorrent协议,使用了叫做BitSwap的数据交换协议,该协议使用两个列表,想要的数据块(want_list)和我有的数据块(have_list)与其他节点进行数据交换。

对象存储。IPFS存储数据私用的事MerkleDAG结构,这赋予了IPFS内容寻址、防篡改、去重功能。

版本控制系统。IPFS在MerkleDAG上面添加了Git版本控制功能,这使得IPFS文件拥有了时光机功能,可以轻松查看文件的变动历史。

自认证命名系统。IPFS使用了SFS自认证系统给文件命名,同时提供了IPNS解决传播问题,而且还兼容了现有的域名系统。


IPFS的技术架构

IPFS入门

IPFS有八层子协议栈,从低往高分别为身份、网络、路由、交换、对象、文件、命名、应用,每个协议栈各司其职,又互相搭配。


身份层和路由层

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


网络层

lib2p可以支持任意传输层协议。ICE NAT traversal框架整合STUN、TURN和其他类型的NAT协议,该框架可以让客户端利用各种NAT方式打通网络,从而完成NAT通信,这对于IPFS的p2p网络非常重要。


交换层

类似迅雷、电驴这样的BT工具,IPFS团队把BitTorrent进行了创新,叫作Bitswap,它增加了信用和帐单体系来激励节点去分享,用户在发送给其他节点数据可以增加信用值,从其他节点接受数据降低信用值。如果用户只去接收数据而不分享数据,信用分会越来越低而被其他节点忽略掉。


对象层和文件层

对象层共同管理IPFS上80%的数据结构。大部分数据对象都是以Merkle DAG的结构存在,这为内容寻址和数据去重提供了便利。

文件层是一个新的数据结构,和DAG并列,采用Git一样的数据结构来支持版本快照。


命名层

具有自我验证的特性(当其他用户获取该对象时,使用指纹公钥进行验签,即验证所用的公钥是否与NodeId匹配,这验证了用户发布对象的真实性,同时也获取到了可变状态),并且加入了IPNS这个巧妙的设计来使得加密后的DAG对象名可定义,增强可阅读性。


应用层

IPFS核心价值就在于上面运行的应用程序,可以利用它类似CDN的功能,在成本很低的带宽下,去获得想要的数据,从而提升整个应用程序的效率。


IPFS的关系图谱

协议实验室团队在开发IPFS时,采用高度模块集成化的方式,像搭积木一样去开发整个项目。其中IPLD、LibP2P、Multiformats这三个模块服务于IPFS底层。下面这张是IPFS的关系图谱。

IPFS入门

Mutiformats是一系列hash加密算法和自描述方式的集合,用以加密和描述nodeID以及指纹数据的生成,它在现有协议基础上对值进行自我描述改造,即从值上就可以知道是如何产生的。

libP2P是IPFS核心中的核心,面对各式各样的传输层协议以及复杂的网络设备,它可以帮助开发者迅速建立一个可用P2P网络层,快速且节约成本。libp2p的主要功能包括:发现节点、连接节点、发现数据、传输数据。它类似现实世界的快递公司,连接着千千万万个节点,除了负责分发数据,还负责查找数据。

IPFS入门指南

IPLD是一个转换中间件,将现有的异构数据结构统一成一种格式,方便不同系统之间的数据交换和互操作。现在IPLD支持比特币、以太坊的区块数据。IPLD中间件可以把不同的区块结构统一成一个标准进行传递,为开发者提供了成功性比较高的标准,不用担心性能、稳定和bug,这也是IPFS为什么受到区块链系统欢迎的重要原因。 

IPFS应用了这几个模块的功能,集成为一种容器化的应用程序,运行在独立节点上,以Web服务的形式,供大家使用访问。IPFS允许网络中的参与者互相存储,索取和传输可验证的数据。但是由于IPFS是开源的,可以被免费下载和使用,并且已经被大量的团队使用。运用IPFS及技术各个节点可存储它们认为重要的数据;但目前没有简单的方法可以激励他人加入网络或存储特定数据,IPFS的推广普及的速度明显很慢。


IPFS是如何工作的

IPFS是基于文件内容进行寻址的。IPFS为每一个文件分配一个独一无二的哈希值(文件指纹:根据文件的内容进行创建),即使是两个文件内容只有1个比特的不同,其哈希值也是不相同的。所以IPFS是基于文件内容进行寻址,而不像传统的HTTP协议已于基于域名寻址。

文件版本管理。IPFS在整个网络范围内去掉重复的文件,并且为文件建立版本管理,也就是说,每一个文件的变更历史都将被记录,可以很容易回到文件的历史版本查看数据。

文件查询。当查询文件的时候,IPFS网络根据文件的哈希值(全网唯一)进行查找。由于每个文件的哈希值全网唯一,所以查询将很容易进行。每个节点除了存储自己需要的数据,还存储了一张哈希表,用来记录文件存储所在的位置,用来进行文件的查询、下载。

IPNS。如果仅仅使用哈希值来区分文件的话,会给传播造成困难,因为哈希值不容易记忆,就像IP地址一样不容易记忆,于是人类发明了域名。IPFS利用IPNS将哈希值映射为容易记的名字。IPFS哈希代表不可变的数据,这意味着他们是不能被更改的,否则会导致哈希值的变更。IPFS通过一种特殊的功能来实现,即IPNS。IPNS允许用户使用一个私钥来对IPFS哈希附加一个引用,使用一个公钥哈希表示你的网站是最新版本。如果你使用过比特币,可能会对此比较熟悉,一个比特币地址也是一个公钥,如果该链接不起作用,不用担心,能够通过更改公钥所指向的内容,而公钥却永远保持不变。这样,网站的更新问题就得到了解决。接下来,只需要保证这些网站的位置是人类可读的,所有问题就解决了。

人类可读的可变地址。IPFS/IPNS哈希是一些很大的、难看的字符串,而且不容易记住。所以IPFS允许用户使用现有的域名系统(Domain Name System,DNS)来为IPFS/IPNS内容提供人类可读的链接。它允许用户通过在域名服务器上将哈希插入TXT记录来实现这一点。

IPFS HTTP网关,新旧网络之间的桥梁。通过一个HTTP网关,IPFS可以实现从HTTP到IPFS的过渡,在浏览器完全支持IPFS之前,现在已经允许当前的Web浏览器访问IPFS。用户很快就可以切换到IPFS,完成Web网络的存储、分发和服务。


IPFS可以用来做什么

在/ipfs和/ipns下面挂在全球永久文件系统。就是说所有的文件都可以存到上面。挂在个人同步的文件夹,可以自动进行版本管理、自动备份,也就意味着未来将拥有无限空间的网盘,不用担心数据丢失和隐私泄露。

作为带版本控制的软件包管理系统。

作为虚拟机的根文件系统。利用管理程序,把IPFS作为虚拟机的引导文件系统、在线操作系统。

作为数据库。应用可以直接操作IPFS的MerkleDAG数据结构,并且可以使用IPFS的版本控制、缓存,自动备份、永不丢失、安全加密、无限空间、高速连接。

作为加密通讯平台。

作为加密CDN。

永久Web。不存在不能访问的链接,不会出现404错误。

入门必读:IPFS白皮书(中文版)


IPFS与Filecoin

IPFS入门

协议实验室在创建IPFS的时候就提出了与IPFS相辅相成的Filecoin,Filecoin是一个共有区块链,是IPFS的经济激励系统,承载着IPFS的价值传递,维系着IPFS生态的发展。

在Filecoin的激励机制下,用户通过支付Filecoin获得存储数据以及检索数据服务,而矿工们则通过存储数据并以加密方式证明数据存储来获得付款和奖励。IPFS和Filecoin的关系有点类似于区块链与比特币之间的关系。

IPFS入门
Filecoin用户与矿工交互图

Filecoin基于时空证明的共识机制,其存储数据的区块由矿工创建。Filecoin协议通过一个独立的存储提供者的网络提供数据存储与检索服务,它并不依赖于单一的协调组,在这里,用户为存储与检索数据而付费,存储矿工按存储报价获得Tokens奖励,检索矿工按服务数据获得Tokens奖励。

 暂无评论,快来抢沙发吧~

发布评论