IPFS技术浅析
- 一、IPFS是什么?
星际文件系统IPFS(Inter-Planetary File System)是一个面向全球的、点对点的分布式版本文件系统,致力于创建持久且分布式存储和共享文件的网络传输协议。目标是为了补充(甚至是取代)目前统治互联网的超文本传输协议(HTTP),将所有具有相同文件系统的计算设备连接在一起。
简单来说IPFS是一个可以永远存在的、由多个节点组成且没有中心化的文件存储和共享系统。
- 二、IPFS的起源
IPFS是一个开放源代码项目,在2014年开始由Protocol Labs在开源社区的帮助下发展。其最初由Juan Benet设计,他建立实验室开发IPFS初衷正是为了通过设计一个协议建立更加安全、高效、开放的网络。他进入斯坦福大学后,学习计算机技术方面的知识,从事对分布式存储网络技术的研究开发。
- 三、IPFS原理
原理用基于内容的地址替代基于域名的地址,也就是用户寻找的不是某个地址而是储存在某个地方的内容,不需要验证发送者的身份,而只需要验证内容的哈希,通过这样可以让网页的速度更快、更安全、更健壮、更持久。
IPFS中文件通常不会都存在.一个节点上,.而是分片存在其他一些子节点上。提取.文件时IPFS把这些节点列表全部并行抓取,最后在本地拼成完整的.文件。并行的速度远远大于直接下载完整⽂文件的速度,用户很快就能在本地获得文件,还可以继续分享给其他人。分布式的储存方式能有效解决数据丢失的风险,同时减轻个体数据库的存储压力。
在IPFS中,每个文件及其中的所有数据都被赋予一个唯一的加密指纹。IPFS通过网络删除重复具有相同哈希值的文件,计算之后判断哪些文件是冗余重复的。并跟踪每个文件的版本历史记录。每个网络节点只存储想存储的内容,检索自己想要的信息。查找文件时,通过文件的哈希值就在网络查找到储存改文件的节点,找到所需的文件。 并且,每个节点除了存储了数据以外,还存储了一张哈希表,用来记录文件存储所在的位置,便于进行文件的查询下载。
采用IPNS即去中心化命名系统,每个文件都可以被协作命名为易读的名字。搜索之后可以很快地找到想要的文件。
IPFS设想的是让所有的网络终端节点不只是扮演使用浏览器 Browser或者终端Client的角色。人人参与IPFS,人人都是网络节点,人人都可以是服务器,从而组建一个去中心化的分布式网络。
当我们搜索/下载内容时,IPFS网络系统就会从离我们最近的距离(这里不是物理距离,是数学距离)的若干存储节点,传输数据或者文件的碎片(不是整个文件)给我们,它是若干节点同时下载传输到我们的设备上(类似于P2P、BT技术),速度非常快。当然,从这些节点下载出来的文件碎片,最终会整合成一个完整的文件呈现给我们。
IPFS网络是一个细粒度的、不可靠的、分布式的、易联合的内容分发网络(Content Delivery Network , CDN)。这就是IPFS与HTTP的区别,传统HTTP协议是从单个中心服务器将整个文件下载传输到设备上的,下载的速度相对慢很多。
上传到IPFS网络的文件会被分割成若干块,那如果其中的一块意外被损坏了,怎么办呢?不用担心,IPFS系统有一个容错机制,容错机制的意思就是,假设一份文件被分割成10份,其中4份损坏了,那么还是可以根据剩下的6份还原出原文件来。所以说,你的文件是可以被永久保存在IPFS网络里面的。
- 四、IPFS挖矿背景
IPFS系统下挖矿得到FIL(Filecoin),Filecoin是一个去中心化的存储网络,Filecoin有两个市场:存储市场和检索市场,这两个市场结构相同,但结构不同。
Filecoin:把基于IPFS应用的数据价值化,通过类似比特币的激励政策和经济模型,让更更多的.人去创建节点,提供服务,去让更多的人使用IPFS。(所谓提供的服务就是,有人提供存储服务,有人提供检索服务,存储市场和检索市场属于去中心化的交易所)。
存储市场上,客户付费给存储矿工,令其存储数据。检索市场上,客户向检索矿工付费后取回数据。(付费:Filecoin)
存储矿工为网络提供数据存储,存储矿工通过提供磁盘空间和响应客户请求来参与Filecoin运作。
检索矿工为网络提供数据检索服务,检索矿工通过提供用户检索请求所需要的数据来参与Filecoin运作。
(1)存储矿工可以同时担任检索矿工;
(2)存储矿工需要抵押存储磁盘空间,而检索矿工就不需要。
- 五、IPFS与Http相比有哪些优势?
IPFS具备内容可寻址、版本化、点对点超媒体的分布式协议,它的目标就是取代HTTP协议。
先说一下什么是HTTP。
HTTP指超文本传输协议(英文:HyperText Transfer Protocol),是计算机网络和超媒体信息系统的应用层协议。HTTP是互联网的数据通信的基础。但是仍然存在一些不可避免的缺点:
HTTP效率低,中心化服务器成本昂贵,并且依赖主干网,文件和数据容易丢失,网络攻击和安全问题频出等。
具体来说,在http协议的中心化造成效率非常低,并且成本还很高。一旦使用HTTP协议每次需要从中心化的服务器下载完整的文件(网页,视频,图片等),速度慢,效率低.如果改用P2P的方式下载,可以节省近60%的带宽. P2P将文件分割为小的块,从多个服务器同时下载,速度非常快.
还有一种就是web文件经常被删除。我们可能在上网的过程中会遇到,收藏某个网页,在使用的时候浏览器网页会显示404。而且现在web的存储成本非常高,时间也就是最多100天。所以会发现web文件经常被删除。. IPFS提供了文件的历史版本回溯功能(就像git版本控制工具一样),可以很容易的查看文件的历史版本,数据可以得到永久保存
IPFS目标是是取代传统HTTP,那么使用IPFS会带来哪些好处?
(1)一个宇宙图书馆,存储人类文件数据
IPFS是一个分布式存储网络,无论是文字、图片、音乐、视频等,都可以成为存储资源。对于你来说,相当于有一个无限空间的网盘,对于企业来讲也是如此,海量的数据均可以存储。并且,通过文件地址就可以打开它们,这个地址是可以被分享的。由于是分布式存储,你的文件和数据不会丢失。
(2)你的文件安全你做主
- 在IPFS系统里,文件及数据具有存在的唯一性,一个文件加入了IPFS的网络,将基于计算对内容赋予一个唯一加密的哈希值。意味着IPFS哈希运算过后生成的地址是唯一。该地址不可篡改,也不可删除的特性。因此,一旦数据存储在IPFS中,它就会是完全的。而传统的HTTP网络,黑客可以对你进行攻击,盗取你的文件。在IPFS网络中,所有的文件和数据是分散在许许多多节点上的,而且都是加密的,黑客没有办法进行攻击。
- 对于文件的使用,你手上私钥只有你拥有,是惟一的,你完全掌控着自己的文件安全。而在传统网络中,比如一笔存放在某个支付钱包中,其实你的密码和账户是在中心化服务器中,不止你一个人知道账户密码,当然一般正规支付钱包不会冒着法律风险随意公开你的密码,但是平台一旦服务器瘫痪或被攻击,你的所有信息都是可能被盗取的。而IPFS则很好解决了这些问题,保证了文件和数据的安全性。
(3)不用多花钱了,网络会更好用
在IPFS中通过P2P即点对点传输的方式进行数据传输,可以节省带宽成本的60%。而在传统中心化网络中,服务器成本是巨大的。
同时,IPFS还有文件重复检测机制,不会出现资源冗余问题。而传统的HTTP一部电影会被反复储存,产生极大的网络资源浪费。
(4)作为区块链基础设施
区块链项目存在数据容量问题,IPFS可以与之进行无缝衔接,作为基础设施存在。
-
六、IPNS命名系统
如果我们要在IPFS网络上查询想要的文件或信息,只要输入对应的哈希值,就可以检索到这个文件。由于这个哈希值是全网唯一的,查询起来的速度非常快。
但是,如果使用哈希值来区分文件的话,我难道要记住那么多的一串串的哈希值?一个哈希值可是有64位的数字加字母啊,记起来多麻烦啊。假如我在IPFS网络上搭建了一个网站,生成一个这么复杂的哈希值,这不利于宣传啊,也会造成传播困难。
事实上,当然不会这样。因为哈希值不容易记忆,就像IP地址一样不容易记忆。所以Protocol Labs协议实验室弄出了IPNS(InterPlanetary Name System),IPFS的域名命名系统,这样,IPFS就可以利用IPNS将哈希值映射为容易记的名字了。
用一个例子演说IPFS的工作流程
比如我想观看一部叫ABC的视频:
1. 加入IPFS网络,在网络中搜索叫ABC的文件(ABC是通过IPNS映射得来的名字)。
2. IPFS网络迅速索引区块链上的哈希值,反馈出搜索结果。
3. 你支付一点Filecoin代币,获取ABC文件缓存到本地,ABC文件不是从云或者服务器上面下载下来的,而是由IPFS网络的参与者贡献的,它可能是离你最近的一个网络节点。这样的好处是,不仅不需要中间服务器,而且网络传输效率最快。
4. 如果ABC文件恰巧你周边好几个人都有,那IPFS网络会把这个文件拆成一小片一小片,节省了这些节点的储存成本,也让你用最具效率的方式下载到该视频。
5. 这个ABC视频文件缓存在你自己电脑里,不仅自己可以观看,同时也为其他需要ABC这部视频的人提供资源。
6. 另外,你也可以自己发布新内容到这个网络上,并且有机会获得Filecoin代币,因为你也为网络做了贡献。
通过这样的方式,实现了整个网络的文件利用达到最优效率。
- 七、应用场景
-
基于IPFS技术的应用已经越来越多,目前已经有不少的成功项目,从数据存储到文件传输,从社交媒体到买卖交易,这些APP、应用、平台,正在重构整个互联网。在上图中,是目前IPFS星际文件系统这一底层协议的项目大全。其中一些其采用了多种协议栈,值得我们关注。
1.Filecoin:是基于IPFS的分布式存储区块链项目,是IPFS官方团队开发的项目。IPFS可以独立存在,而Filecoin是IPFS的激励层。
2.Poseidon:一个基于IPFS网络的中心化的分布式搜索引擎,可以让用户快速检索IPFS网络上的文件,寻找到所需要的数据,同时用户参与挖矿还能获得通证激励。被誉为区块链版Google。Google是世界上最大的搜索引擎,但它是中心化的。Poseidon支持打标签即挖矿,支持双挖POSC+FILECOIN。
3.Orbit:是一个数据平台,在IPFS诞生之初就已经发挥了它的重要作用。用Orbit可以开发一个“局域网”匿名聊天网络。
4.Textile:一个数字资产平台,Textile Photos是其官方开发的去中心化版相册,致力于取代Instagram。
5.Peepeth:Peepeth是一个分布式社交平台,可以看作是区块链版推特。包括以太坊V神等人均在使用。不过笔者提示,该平台注册流程较为复杂,正常使用有一些难度。
6.GLOBAL UPLOAD:是IPFS全球文件上传,你在哪里都可以将文件Upload到IPFS网络,获取到hash地址。网站简洁、易用。对于需要普通人来说,它是一个上传文件到IPFS的绝佳助手。
实际上,IPFS技术已经运用到了许多领域。依旧是上图,你会发现IPFS项目类型多样,基本是涵盖了当前的多个领域。不过也需要注意,国内已经出现借着IPFS的名义进行传销的项目,或者剽窃IPFS的功能,然后宣称它们的项目是有更多优势的,等等诸如此类,从一开始就是一个骗局。
-
八、加密存储
(1)HealthWalletStorage IPFS系列存储
参考: http://www.healthwallet.cc/storage.html#storage3
(2)
下图简单的表述了IPFS的工作流程:
John打算上传一份PDF文档到IPFS: 他首先把PDF文件放到电脑工作区;然后,使用IPFS相关命令添加这个文件,并且得到了文件的hash值。上面动作结束后,这个PDF文件就可以在IPFS上面被访问了。
现在John打算把这个PDF通过IPFS分享给他的同事Mary。他只需要得到的hash值告诉Mary,然后Mary就能按图索骥,从IPFS上面下载这份文件。
不对称加密技术能够让我们用文件接收方的公钥加密文件,之后接收方从IPFS下载文件之后,再用私钥解密即可。作恶方就算从IPFS上取得这个文件,也不能做任何事情,因为无法解密其内容。让我们重新设一下前面的工作流程,这次引入加密和解密的过程:
John打算上传一份PDF到IPFS,但只打算给Mary一个人看。他将PDF放入电脑的工作区,然后用Mary的公钥对其进行加密。然后使用IPFS相关命令添加这个加密后的文件,并且得到了加密文件的hash值。上面动作结束后,这个加密过的文件就可以在IPFS上面被访问了。Mary得知hash值之后,可以从IPFS上下载,并用她的秘钥解密得到原PDF文件。
任何企图作恶的一方,由于没有Mary的密钥,所以他们无法解密这个文件,从而保证了文件在IPFS上面的安全共享。
(3)CarBlock
参考:http://www.woshipm.com/blockchain/992480.html
GitHub: https://github.com/zhangerna/carblock
(4)textile.photos
参考: http://www.btb8.com/fil/1810/18253.html
Github:
https://github.com/textileio/photos https://www.textile.photos/