前言
随着社会网络的不断发展,当前时代人们对网络资源的渴求越来越大,从文本、图片乃至视频文件。然而在人们的日常使用中,传统的HTTP协议的诟病一一浮现出来,于此同时其他的传输协议也不断兴起,IPFS作为一个点对点分布式文件系统系统无疑是其中的佼佼者!本文就此对IPFS做个简单介绍。一、什么是IPFS?
IPFS(星际文件系统)中文名称“星际文件系统”是一种分布式的Web点对点超媒体协议。在我们日常生活中,每个人都有闲置的硬盘空间和带宽,把它们贡献出来给有需要的人/企业使用,然后你能够从中获得别人给你的Filecoin作为奖励。如果此操作发生并且可以大规模推广和使用,那么最终IPFS的愿景将实现。IPFS能让我们的互联网速度更快、更安全,并且更加开放,它的终极目标是取代传统的HTTP协议,成为互联网新时代的基础设施。
IPFS具有以下特点:
(1)IPFS是一个运用git分布式、去中心化存储且单一的bittorrent群集。
(2)IPFS是依据内容从而来产生地址,它提供了高吞吐量的内容寻址存储模型。
(3)IPFS主要是通过默克尔树数据结构来构建版本文件系统。
(4)IPFS不存在单独的故障点,节点之间也是不需要相互信任。
二、IPFS的优势
HTTP是一个伟大的发明,它让我们的互联网得到了快速的发展,然而随着互联网的进步。HTTP的不少诟病也渐渐浮现出来:
1.服务器中心化且成本很高;
2.Web文件经常被删除,也就是我们收藏的页面下次打开可能已经找不到了;
3.高度依赖易受外界因素影响的互联网主干网,导致宕机等等。
IPFS的出现,以上这些问题将得到根本的解决。
相比传统的HTTP协议,IPFS具有以下优势:
1.IPFS 不再依赖主干网和中心化服务器,它通过一个文件系统将网络中所有的设备连接起来,让存储在系统上的文件,在全世界任何一个地方快速获取。
2.IPFS 有历史版本回溯,数据可以得到永久地保存,并且所有的操作都是可逆的,如同我们常用的git。
3.IPFS能改变Web内容的分发机制,使其完成去中心化,它借助的是CDN(内容分发加速技术)。
4.在IPFS系统里,文件及数据具有存在的唯一性,一个文件加入了IPFS的网络,将基于计算对内容赋予一个唯一加密的哈希值。
5.IPFS具有文件重复检测机制,不会出现资源冗余的问题。
三、IPFS的发展历程
自2014年5月胡安·贝内特发起了IPFS项目至今,IPFS发展迅速,目前全球存储总量已经达到9EB(1EB=1024*1024TB)
![](https://i-blog.csdnimg.cn/blog_migrate/13edbc809bf8c350a0673517fc7c040c.png)
随着IPFS的迅速发展,IPFS在国内受到不少人的青睐,另一方面国家也对IPFS格外重视,从2019年开始逐步投入对IPFS的研究工作。
四、IPFS的内容
1.协议:
首先IPFS是一个协议,类似于http协议,它拥有以下功能:
(1). 内容寻址
定义了一个基于内容的寻址文件系统,主要借助Merkle DAG(默克尔有向无环图),它具有内容寻址,防止篡改及去重等特点。
1) 内容寻址: 使用多重Hash来唯一识别一个数据块的内容。
2) 防篡改:可以方便地检查Hash值来确认数据是否被篡改。
3) 去重: 由于内容相同的数据块Hash值是相同的,很容易去掉重复的数据,节省存储空间。
DAG的拓扑数据结构如下图:
1和2号是创世单元;第3个单元产生时,只需要确认1号和2号的交易;第4个单元产生时,只需要确认2号和3号,以此类推。
(2). 内容分发
内容分发借助的是BitTorrent,它是一种内容分发协议。BitTorrent采用内容分发和点对点技术,帮助用户相互更高效地共享大文件,减轻中心化服务器 的负载。BitTorrent网络里,每个用户需要同时上传和下载数据。文件 的持有者将文件发送给其中一个或多个用户,再由这些用户转发给其他 用户,用户之间相互转发自己所拥有的文件部分,直到每个用户的下载 全部完成。
(3). 使用分布式hash
IPFS网络的路由使用的是DHT,借鉴了S/Kademlia,使得一个节点可以快速的查找到其它节点。
DHT的主要思想是: 全网维护一个巨大的文件索引哈希表,这个哈希表的条目形如<Key,Value>。这里Key通常是文件的某个哈希算法下的哈希值(也可以是文件名或者文件内容描述), 而Value则是存储文件的IP地址。查询时,仅需要提供Key,就能从表中 查询到存储节点的地址并返回给查询节点。
这个哈希表会被分割 成小块,按照一定的算法和规则分布到全网各个节点上。每个节点仅需 要维护一小块哈希表。这样,节点查询文件时,只要把查询报文路由到 相应的节点即可。
(4). p2p传输
p2p传输主要依靠libp2p,它负责IPFS数据的网络通信、路由、交换等功能。
libp2p的功能: libp2p能帮助你连接各个设备节点的网络通信库,即:任意两个节 点,不管在哪里,不管处于什么环境,不管运行什么操作系统,不管是不是在NAT之后,只要它们有物理上连接的可能性,那么libp2p就会帮 你完成这个连接。Filecoin和IPFS是基于libp2p来进行数据传输的。
libp2p的工作流程:
libp2p的工作流程如下:
1)运行 Libp2p 协议的节点在初始化之后需要通过各种方式发现更多的节点,比如 Bootstrap list、mDNS、DHT 等,这主要由发现模块负责与实现。
2)当发现更多接点后,Libp2p 会把这些获取到的节点信息存储在分布式记录存储模块中,供以后方便使用。
3)当上层应用需要连接某个节点时,节点路由模块会找到多条不同的路径,连接管理模块会对这些路径进行尝试连接。
4)连接成功之后,上层应用将通过内容路由模块与连接节点进行内容交互,在底层通过传输模块互相传递数据。
(5). 版本管理系统
版本控制系统是用于记录一个或若干文件内容变化,以便将来查阅 特定版本修订情况的系统。
IPFS在 Merkle DAG上面添加了Git版本控制功能,这使得我们可以轻松查看文件的变动历史。Git版本控制系统是一种分布式版本控制系统,这类客户端并不只提取最新版本的文件 快照,而是把代码仓库完整地镜像下来。任何一处协同工作用的服务器发生故障,事后都可以用任何 一个镜像出来的本地仓库恢复。
分布式版本控制系统原理如下:
![](https://i-blog.csdnimg.cn/blog_migrate/206dd08ab0f11fee2ff9d36030567499.png)
2.文件系统:
其次IPFS是一个文件系统:
- 有文件夹和文件,类似于我们熟悉的百度网盘
- 可挂载文件系统
3.web协议:
1.它可以像传统的http那样查看互联网页面
2.未来浏览器可以直接支持ipfs:/或者fs:/协议
4.模块化的协议:
IPFS是一个模块化的协议,它包括连接层、路由层及数据块交换三个方面
1.连接层:可以通过其他任何网络协议连接
2.路由层:寻找定位文件所在位置
3.数据交换:采用BitTorrent技术
**比特流(BitTorrent)**是一种内容分发协议,由布拉姆·科恩自主开发。它采用高效的软件分发系统和点对点技术共享大体积文件(如一部电影或电视节目),并使每个用户像网络重新分配结点那样提供上传服务。一般的下载服务器为每一个发出下载请求的用户提供下载服务,而BitTorrent的工作方式与之不同。分配器或文件的持有者将文件发送给其中一名用户,再由这名用户转发给其它用户,用户之间相互转发自己所拥有的文件部分,直到每个用户的下载都全部完成。这种方法可以使下载服务器同时处理多个大体积文件的下载请求,而无须占用大量[带宽] 特点:上传速度越快,下载速度越快。(百度百科)
![](https://i-blog.csdnimg.cn/blog_migrate/24d09a6a6540ad161a83982b95ad098b.png)
5.p2p系统
IPFS是一个p2p(点对点)系统,它具有以下特点:
1.世界范围内的p2p文件传输网络
2.分布式网络结构
3.没有单点失效问题
6.CDN
CDN:CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术(百度百科)
CDN网络是在用户和服务器之间增加Cache层,主要是通过接管DNS实现,将用户的请求引导到Cache上获得源服务器的数据,从而降低网络的访问时间。
CDN原理图如下:
1.文件添加到IPFS网络,将会在全世界进行CDN加速
2.bitorrent的带宽管理
7.命名服务
IPFS拥有命名服务:
1.IPNS:基于SFS(自认证系统)命名系统
2.可以和现有域名系统绑定。
SFS
SFS采用的是将公钥信息嵌入文 件名中,这个做法命名为“自验证文件名”。
1.SFS的核心思想主要有以下几点:
1)SFS文件系统具备自验证路径名称,不需要在文件系统内部实现密钥管理。
2)在SFS上易于架设各种密钥管理机制,包括各类组合机制。
3)SFS将密钥管理与密钥分发解耦。
4)实现全球范围的文件系统。
2.SFS的特点
SFS具有安全性和可扩展性
安全性:
SFS的安全主要体现在文件系统本身的安全性和密钥管理的安全性。
1)文件系统本身的安全性: SFS除非明确指明允许匿名访问,否则用 户如果需要读取、修改、删除或者对文件进行任何篡改,都需要提供正 确的密钥。
2)密钥管理的安全性: 用户 可以使用预先设置的私钥,或使用多重加密,再或者使用由第三方公司 提供的文件系统来访问经过认证的文件服务器。用户可以从中灵活、轻 松地构建各种密钥管理机制
可扩展性:
SFS的可扩展性主要体现在全局命名空间、密钥管理的原语集、模块化设计三个方面。
1)全局命名空间: 在任意一个客户端登录的SFS都具有相同的命名空 间。
2)密钥管理的原语集: SFS还允许用户在文件名解析期间使用任意算 法来查找和验证公钥。
3)模块化设计: 客户端和服务器在设计时就大量使用了模块化设 计,程序之间大多使用设计好的接口进行通信
五、IPFS与Filecoin
提到IPFS就不得不提到Filecoin,Filecoin 是一个将云存储转变为算法市场的去中心化存储网络,矿工通过提供存储、分发和检索数据服务获得奖励,而客户则需要付费获得这些服务。
IPFS与Filecoin在技术上相对独立的,然而基于IPFS的应用往往有着巨大的数据存储和节点数量需求,如果没有激励机制,没有人会愿意无偿贡献出自己的资源,Filecoin矿工在经济的激励下可以为IPFS网络贡献许多节点和资源。IPFS将Filecoin作为其激励层,参与者(矿工)通过贡献存储空间和带宽,可以获得加密货币Filecoin奖励。
截止当前时间欧意交易所:filecoin 排在第10位,价格在24美元左右。
1. Filecoin激励原理及流程
1).Filecoin 是帮用户存储数据来获取奖励的过程,分为数据封存和共识证明两个过程。
2).Filecoin 架构包括三部分,分别是存储市场、FIL 区块链和检索市场。如下图所示:
3).Filecoin可以简单拆分为worker和miner两个步骤。worker负责计算,miner则通过算力进行mining。Filecoin mining过程如下:
2.Filecoin的数据封存
数据封存阶段主要涉及Precommit 1,Precommit 2,Commit 1,Commit 2四个小阶段。简称P1、P2、C1、C2阶段。
1).P1阶段
系统会把用户需要存储的文件分成一个个大小为 32GB 的 sector(块),P1 阶段就是矿工先对sector 进行进一步的拆分,然后再按顺序进行存储,中间需要进行 11 层计算,且无法并行计算。
2).P2 阶段:
P2 阶段即就是计算 Column Hash 以及生成 Replica,并构造相应的 Merkle 树,相当于解题并做出答案的过程。该阶段可以采用 GPU 加速。
3). C1 阶段:
C1 阶段主要是为 Sector 证明准备所需要的数据。这个时间很短,一般在一分钟以内。
4).C2 阶段:
C2 阶段是零知识证明的数据处理以及生成零知识证明的过程。相当于确认答案是否正确的阶段。该阶段可以采用 GPU 加速。
3.Filecoin的共识机制
在每一轮的出块权竞争上,全体存储矿工根据自己的存储算力来竞争区块链的出块权。本轮胜出的矿工进行出块并全网广播,其他矿工验证并接受结果。
Filecoin协议的关键是“算力”的定义和证明,“算力”即矿工的贡献度量,Filecoin协议规定,谁存储的有效数据越多,即谁的算力就越大。
如何判断谁存储的有效数据多呢?
Filecoin提到了两个重要的证明机制:复制证明和时空证明。
Filecoin系统的复制证明与时空证明是区别于其他区块链项目的核心协议,从根本上定义了Filecoin是一个合理高效、去中心化都系统,体现出了公平性、保密性和公开可验证性。
1.复制证明
复制证明(PoRep)是一个新型的存储证明。它让服务器(即证明者 𝒫 )说服用户(即验证者 𝒱 )数据 𝒟 已经被复制到了它的唯一专用的物理存储上了。我们的方案是一种交互式的协议,证明者 𝒫 :(a) 承诺存储数据 𝒟 的 𝑛 个不同副本(即独立物理副本),然后 (b) 通过一个挑战/响应协议说服验证者 𝒱 : 𝒫 确实已经存储了每一个副本。据我们所知,PoRep 改进了 PoR 和 PDP 方案,阻止了女巫攻击、外包攻击和生成攻击的发生。 (引用filecoin白皮书翻译)
他们的共同特点是攻击矿工实际存储的数据大小要比声称存储的数据小,这样攻击矿工就能获得本不该他获得的报酬。
复制证明: 简单理解就是矿工要证明自己,自己确实保存了用户要求存储的数据。如图是证明过程:
![](https://i-blog.csdnimg.cn/blog_migrate/60bf09ea9b743a7ad528fd1665690edb.png)
那么如何保证矿工真正的存储了这些数据呢?
Filecoin协议采用一种叫做 RepGame 的游戏来一起解决这三种攻击方式,PoRes还在此基础上引入了时限性(Time Bounded),PoRes协议的实现可能有很多种方式,不管哪种实现方式都必须能够防止上面的三中攻击方式,并且要能够通过RepGame游戏的测试。
女巫攻击(Sybil Attack): 利用n个身份,承诺存储n份数据D,而实际上存储小于n份(比如1份),但是却提供了n份存储证明,攻击成功。
外部数据源攻击(Outsourcing Attack): 当攻击者矿工收到检验者要求提供数据D的证明的时候,攻击者矿工从别的矿工那里生成证明,证明自己一直存储了数据D,而实际上没有存储,攻击成功。
生成攻击(Generation Attack): 攻击者A可以使用某种方式生成数据D,当检验者验证的时候,攻击者A就可以重新生成数据D来完成存储证明,攻击成功。
2.时空证明(PoSt)
时空证明: 就是矿工要证明自己确实一直是保存了用户要求存储的数据的,换句话说就是作为矿工,我需要能够长时间帮客户保存一份文件。
PoSt的设计思路是,使用一种策略,每间隔一定的区块高度,或 随机选择检查时间点,向存储矿工挑战。每一次挑战,矿工都需要生成 一段PoRep。如果挑战失败,矿工会被惩罚,失去担保的代币,以此来 防止恶意矿工的作弊行为。
六、IPFS应用领域
IPFS主要应用于以下几个领域:
1.建立永久信息档案
IPFS提供了一个弱冗余的、高性能的集群化存储方案。我们可以通过IPFS建立一个长久存在的信息档案。
2.降低存储、带宽成本
IPFS提供了一个安全的点对点内容分发网络。在云计算时代,我们日常所用的网络带宽和网络存储服务,大部分都是由第三方服务平台支持。比如YouTuBe,它需要支付高额的流量费用给IPS(互联网服务提供商),而YouToBe,则通过商业广告及收费会员的形式转接给用户。
介于此IPFS协议实验室团队借鉴比特币的经济模型,设计了基于IPFS的区块链项目Filecoin。Filecoin将IPFS网络参与者分为两类:Storage Miner(为网络提供空闲的存储空间) 和Retriver(为网络中的节点提供带宽,帮助其他用户传输文件),通过这种共享模型充分利用闲置资源,降低了系统总成本,并为用户降低了使用成本。
3.与区块链完美结合
我们可以使用IPFS处理大量数据,并将不变的、永久的IPFS链接放置到区块链事务中,而不必将数据本身放在区块链中。
4.为内容创作带来自由
IPFS可以帮助用户以一种去中心化的方式交付内容。比如Akasha,它是一个基于以太坊和IPFS的社交博客创作平台,用户创作的博客内容通过一个IPFS网络进行发布,而非中心化服务器,内容收益直接归创作者所有,没有中间商分利。
七、IPFS应用场景
下面我要说的是IPFS的主要应用场景,这也许也是大家最关心的问题,
我会从搜索引擎、平台类、社交类、电商类等几个方面一一作介绍。
首先,在2020年2月10日,协议实验室发布了《IPFS 2020年项目重点》,回顾了IPFS在2019年的发展:IPFS公共网络在2019年增长了30倍!每天有成千上万的节点参与IPFS网络!每周都有数百万用户访问IPFS HTTP网关! 在2020年的美国最大的以太坊峰会ETHDenver里面,提交给ETH Denver的52个项目中,有24个是使用IPFS构建的。
在下图中我们可以清楚的看到IPFS在各个领域的应用场景
1.搜索引擎
说到搜索引擎,我们可能会首先想到谷歌浏览器、火狐浏览器。
【谷歌浏览器】
谷歌浏览器(Google Chrome)是目前世界上使用率和市场占有率最高的浏览器。谷歌应用商店为我们提供了丰富的插件,为我们平时的使用提供了便利。在谷歌的应用商店里,我们也能找IPFS的身影。 2019年初,IPFS 伴侣上架谷歌网上应用店。这款插件简化了对IPFS资源访问的浏览器扩展。IPFS是由于IPFS官方社区孵化而成,目的在于帮助用户在本地更好的运行、管理自己的节点,并随时查看IPFS节点的资源信息。无需下载,一键调用。
【Firfox火狐浏览器】
早在2018年火狐 WebExtensions 产品经理 Mike Conca 在 Mozilla 官网介绍了火狐的59项最新扩展。其中一项特性是支持包括IPFS在内的分布式协议,新增了“ipfs://”协议的支持。
2.平台类
【Netflix(网飞)】
Netflix是全球最大的流媒体平台,主要提供互联网在线流媒体播放,定制DVD、蓝光光碟在线出租等业务。Netflix面临最大的难题来自于容器分发问题。镜像层通常位于不同的区域。那么如何在大规模,多区域环境中有效地提取容器镜像呢?现在Netfilx与IPFS合作,利用IPFS作为点对点CDN,可以使Netflix基础架构内的节点进行协作并将共同的种子播种到相邻节点,从而有助于更快地分发容器。
Bitswap是IPFS在两个或多个对等端之间传输文件片段的机制。Netflix针对Bitswap进行了重大改进,在旧版Bitswap中,平均需要花费9.08秒将300 MiB图像拉到32个窃取点上。然而经过改进之后将这一时间缩短至3.16秒,比DockerHub(3.93秒)快也快了20%左右。当窃取点的数量超过播种者时,窃取的片段被重新播种,从而减少了种子与窃取者之间的联系。
![](https://i-blog.csdnimg.cn/blog_migrate/c46c1c3fe9ca73ec58008363843fa9d5.png)
【D.Tube】
D.Tube对标YouTube,它是第一个加密分布式视频平台,建立在 STEEM 区块链和 IPFS 点对点网络之上,未来会支持FIlecoin网络,旨在成为 YouTube 的替代品,允许用户在IPFS/FIlecoin 基础上观看或上传视频,并在不可变的 STEEM 区块链上进行分享或评论,同时赚取加密通证!
【Ujomusic】
Ujomusic对标虾米音乐和咪咕音乐 ,它是一个 IPFS上的音乐家的区块链市场。2015年,Ujo帮助音乐家Imogen Heap用区块链发行了作品“Tiny Human”。粉丝可以购买许可权,下载、试听,也可以用于混音等用途;而且粉丝支付的钱会自动分配给Heap和该作品的合作方。该初创企业还和很多品牌合作,为了“在开源区块链系统中将这些目录重新数字化”,同时鼓励开发者在平台上开发应用
3.社交类
【Peepeth】
Peepeth是一个分布式社交平台,可以看作是区块链版推特。包括以太坊V神等人均在使用。
4.电商类
【Open Bazaar】
Open Bazaar对标淘宝和亚马逊,它是一个去中心化的全球自由买卖市场 。这个平台没有一个中心服务器,每个用户要使用 Open Bazaar 平台购物时,都需要下载一个软件,自身也作为一个服务器节点,为整个网络服务。目前,这款软件已经有 30 多个国家在使用,OpenBazaar 利用 IPFS 的强大功能创造了一个完全免费的电子商务!
5.其他应用
【Peer Map】
PeerMaps是一个分布式,离线的地图应用,可替代商业地图提供商(例如Google地图)。您的计算机不是从集中式切片服务中获取数据,而是从网络中的其他对等方获取地图数据
总结
以上就是今天要讲的内容,包括IPFS的简介,IPFS的发展历程,IPFS主要内容及IPFS的主要应用领域及场景。
参考资料:
https://blog.csdn.net/shyflea/article/details/120612376