区块链学习之:IPFS——行星际文件系统

互联网已经成为现今日常生活中的重要工具,我们通过互联网来享受娱乐媒体,与朋友同事交流,去学习,去处理财务,消费等等。

但我们知道互联网存在一个问题,就是网络上的信息是中心化的,它们被存储在一些大型的数据中心,而这些数据中心的服务器通常是由一家公司控制的。想象一下,像是youtube,维基或者其他这种大型网站发生掉线会是什么样的情景,你又怎么去在互联网上找到你想要的信息或者花上几个小时来看你想看的视频节目?中心化还带来了另外一个问题,那就是审核制度,由于内容是在指定少数服务器上存放和托管,政府可以很容易的将这些服务器屏蔽掉,比如国内阻止了很多境外网站的访问,再比如2017年土耳其以威胁国家安全为由屏蔽阻止其境内对于维基百科的访问。所以,互联网中心化并不是一件好事,那为什么我们还在以这样的形式来使用互联网呢?

我们在使用网络时,通常会对网络有很高的期待,我们希望能够立即加载页面,图片,视频等,并且会希望它们具有很高的质量。通过中心化的服务提供方式,企业可以轻松的控制内容的及访问速度,我们还在用这种方式,因为没有一个好的,快速的替代方案。

那么现在这种情况有可能要发生改变了,IPFS,行星际文件系统,它的团队赋予了他们的系统一个奇怪的名字,同时他们也有一个雄心勃勃的目标。他们希望通过将网络完全运转在P2P网络上来使其达到完全的分布式,类似BitTorrent的工作方式。

IPFS是如何实现这些目标的呢?

首先,我们必须要了解在中心化的互联网中,我们是如何来访问网络上的内容的。假如你要从互联网上下载一张图片,你需要告诉计算机去哪里找到图片。图片的位置通常是通过它的地址(IP或者域名)来标识,也就是“基于位置”的寻址方式。你告诉计算机去哪里获取文件,但如果这个位置不可访问(服务器关闭),那么你就得不到图片,即便是其他人之前下载过这张图片并在他们的计算机上存有这张图片的备份,但你仍然没有办法去从他们的计算机上来获取这张图片。

为了解决这个问题,IPFS的设计的寻址方式从”基于位置“转变成为”基于内容“,也就是说,在这套系统里,你要知道的不是去哪找,而只需要知道找什么。这是如何实现的呢?每一个文件有一个独特的哈希散列,就像是指纹一样,当你需要下载这个文件时,你向网络发出请求“谁拥有这个文件”,然后IPFS网络中拥有文件的节点将向你提供文件。你可能会想,我怎么知道这个文件是我想要的文件或者文件有没有被更改过呢?我们用哈希散列来请求文件,那么收到文件时我们同样可以用这个哈希来验证收到的文件是否匹配,我们知道,一旦文件被更改,它的哈希值也将发生变化,所以,这种方式得到的文件是安全的。使用哈希散列来作为内容寻址方式的另外一个好处是可以有效的去除重复数据。当很多人在IPFS中发布相同文件时,它只会被创建一次,这种机制,使得网络变得很高效和简洁。

接下来我们来看下IPFS是如何来存储文件并使其他人可以访问文件的呢?文件被存储在IPFS对象当中,这些对象可以存储最多256kb的数据,并且可以包含指向其他IPFS对象的链接。

区块链学习之:IPFS——行星际文件系统_第1张图片

但是,大于256kb的文件,像图片,视频怎么办呢?这种文件会被分成多个IPFS对象来存储,每个IPFS对象的大小都是256kb,然后系统会创建一个空的IPFS对象来链接所有的其他部分文件。

区块链学习之:IPFS——行星际文件系统_第2张图片

IPFS系统的数据架构很简单,但功能很强大,这种架构是我们能够像文件系统一样来使用它,我们同样的也能将目录系统转换成IPFS对象来进行存储。

由于IPFS系统是基于内容寻址的,一旦内容被发布到网络中,那么它将不可以被改变,就向区块链一样,是一种不可改变的数据存储。那IPFS上的内容怎样才能被改变呢?IPFS系统提供了文件版本的支持。如果你希望通过IPFS系统来分享你的文件,你需要先创建一个新的提交对象“commit object”,这个对象有一些基本的信息,它需要告诉IPFS系统这个提交链接了哪些文件IPFS对象以及它的前一次提交的链接。当我们想要更新我们的文件时,我们需要将我们的文件添加到IPFS系统当中,那么工具会为你生成一个新的提交对象,这个新的提交对象会链接到前一个提交对象,你可以重复的做这种操作,IPFS系统会确保你的文件以及整个历史记录可以提供其他人访问。

听起来很完美,但IPFS系统不是没有局限和缺点的,面临的最大的问题就是如何保证文件可用。网络上的节点都会保存他们下载过和提供出来分享给别人的文件缓存。但并不是每个人都保存全部的文件。那么,当特定的文件是有四个节点托管的,那么一旦这些节点全部离线,文件也就变的不可用,因为没有额外的副本能提供出来,就想是BitTorrent群没有了种子。

有两种可行的解决方案,要要么去激励参与的节点来保存并提供分享,要么IPFS系统提供保证分发的文件总有一定数量的可用备份。有人有这个打算,IPFS团队同时还创造了FileCoin,它是基本建立在IPFS之上的区块链,旨在创造一个分散的存储市场,如果你有一些可用的空间,你可以把它 租给别人,并通过这种方式来赚钱。FileCoin为节点长时间在线保存文件创造了强烈的动机,为了FileCoin奖励。这套系统还保证了文件在许多节点上的复制,从而保证文件不会变得不可用。关于FileCoin,这里不再做过多展开说明。

最后,我们来看看IPFS能用来做些什么?前面提到2017年,土耳其政府决定阻止对维基百科的访问,那么IPFS的用户通过将维基百科的副本放到IPFS系统当中来作为对土耳其政府的回应,因为IPFS是分布式的,并没有中央服务器,政府也无法采取有效的措施来针对它。另外一个叫Dtube的应用,是一个类似YouTube的网站,但完全是基于IPFS的分布式应用,任何人都可以发布视频和支持该网络运营。

最后一个来说下,为什么IPFS系统叫行星际文件系统,是因为它适合穿越多个行星吗?假设我们已火星到地球为例,由于两颗星球间距离的原因,信号的传播通常需要4到24分钟。如果你在火星上,想要查看一个维基百科的页面,首先你要向维基百科发起请求,的最快需要4分钟到达地球,然后互联网可能需要数毫秒响应维基百科的服务器,然后再4分钟将数据返回火星。那么,你要在火星上访问一个网页,好的情况呢,你需要8分钟,差的情况你可能需要48分钟。借助IPFS系统,可以在火星上缓存大部分互联网,当有人已经缓存了你要访问的页面,那么就可以从火星上的节点直接返回数据,使速度和地球上一样快。IPFS可以用来在多个行星上来分配部分互联网的访问。

总的来说,IPFS是一个很有想法的项目,使互联网变得真正去中心化变得可能。

你可能感兴趣的:(区块链学习之:IPFS——行星际文件系统)