当前位置:  首页 →区块链百科 →正文

IPFS深入浅出:对标HTTP的分布式存储技术

2019-01-07 9:32:33 区块链百科

IPFS是一种互联网协议,如果协议这个词不太好理解的话,可以理解为IPFS就是一个软件。这软件有什么功能?当大家电脑上都安装了这个软件之后,我们所有的电脑将会连成一张网,你电脑中的带宽存储和计算资源将会进入到这个网络,别人是可以使用这个网络中的这些资源。

IPFS 是什么

IPFS 是什么?

IPFS 的创造者是 Juan Benet,他同时也是 Protocol Lab 的创始人。Protocol Lab 是一个技术研究和开发实验室,直接负责 IPFS 的研发,同时也开发了 Filecoin 和 IPLD 等。 Juan Benet 在斯坦福大学学习计算机科学,对任何与知识、科学和技术有关的东西都非常着迷。

Juan Benet 最初并不是想创建 IPFS,他希望找到一种高效的方法来移动科学数据集,这意味着数据的大小可以达到 10-100 GB 以上。 IPFS 的设计看起来像 Git 和 BitTorrent 的合体。 Bittorrent 提供了在网络上快速移动大文件的能力,Git 为数据提供内置的版本控制。

在创建了这个协议之后,Juan Benet 很快意识到,IPFS 的作用远远超过了移动大型数据集。 他实际上创建了一个协议,可以取代其他流行的协议,来通过网络访问信息。

当命名 IPFS 这个名字的时候,他们的想法是向互联网的命名致敬。 Jcr Licklider 是 Arpanet (互联网的前身)的创造者,他的目标就是创造一个星际网络。 因此,互联网实际上是星际网络的简称。 Interplanetary 也会消耗一些同样的命名原则,另外,IPFS 旨在成为互联网协议(IP)的文件系统(FS)。 当把它们放在一起的时候,就有了 IPFS,一个互联网文件系统。

 

网络文件访问基础

了解 IPFS,要先从了解如何从网络访问文件开始。

IPFS——基于内容的寻址

当要从互联网上下载一个图像的时候,要告诉电脑准确地找到你所请求的图像。 这个位置通常采用 URL 的形式,其中包含存储照片的公司域名,后面跟着一个扩展名,指定文件是什么。 如上图的请求示例如下: http://www.bbcaijing.cn/wp-content/uploads/2019/01/07011748853.jpg。 这种访问资源的方法称为"基于位置的寻址",即告诉计算机可以访问信息的位置,然后计算机检索信息。 这种方法的一个问题是,如果位置不可访问(可能服务器处于脱机状态) ,那么用户的计算机就无法检索到他们需要的信息。

为了解决这个问题,IPFS 引入了"基于内容的寻址"的概念。 使用基于内容的寻址在请求特定资源时不需要指定资源的位置,只需指定所需的内容。

每个文件都有一个唯一的哈希值,可以认为是文件的指纹或身份。 当想要访问一个特定的文件时,用户只需要向网络询问谁有一个带有指定散列的文件副本。 一旦发出请求,IPFS 网络上的某个人将提供您所请求的资源。 下载该资源,一个副本将被保存到您的 IPFS 缓存中。 现在,当另一个人来请求相同的文件,您就能够提供这个文件副本给他们。 这将创建一个速度更快的系统,因为共享的文件越多,在大量节点组中可用的文件就越多。

 

IPFS的工作原理

现在,已经了解了 IPFS 与当今传统方法对比的基础知识,可以更深入地了解 IPFS 是如何存储数据并使用户能够访问数据的了。

在 IPFS 中,文件存储在 IPFS 对象中,每个对象可以存储 256 kb 的数据。 一个 对象也可以包含一个 链接到另一个 IPFS 的对象,链接使得存储大于 256 kb 的数据成为可能。 例如,如果您只上传一个小的文本文件,那么一个 256kb 的对象应该足以满足您的需求。

但是,如果存储一张图片,则会将其分解为多个对象,每个对象的最大值为 256 kb。 然后,IPFS 系统将创建一个空对象,该对象将链接到组成该图片的所有对象。

IPFS工作原理

这个体系结构非常简单,但它非常强大,真正使 IPFS 作为文件系统使用。浏览下面简单的文件目录结构,进而解释如何将其转换为 IPFS 结构:

可以通过为每个文件和每个文件夹 / 目录创建1个对象,然后将文件链接到指定的目录来转换为 IPFS。 但是,如果考虑到 IPFS 使用基于内容的寻址这一事实,情况就更好了。 这意味着添加的文件是不可变的,它们永远不能被改变,就像区块链一样。 这意味着用户可以确定正在访问的资源是正确的数据,并且从未被更改过。

 

IPFS 中的数据更新

IPFS支持文件的版本化,这与 Git 的开源代码仓库类似。 例如,您正在处理一个名为 "Important Document-v1.doc" 的文本文件,并希望使用 IFPS 与人们共享该文档。 当您将这个文件添加到 IPFS 时,幕后发生的是,IPFS 将创建一个新的 Commit 对象。 这个对象是非常基本的,它所做的只是告诉 IPFS 哪个提交在这个提交之前,它链接到与文件 "Important Document-v1.doc" 相关联的 IPFS 对象。

现在想象一下,一段时间过去了,你的 "Important Document.doc" 需要修改。 通过简单地将新文件添加到 "Important Document-v2.doc",IPFS 将为更新的文件创建一个新的 Commit Object (与原始过程相同)。 这个提交对象现在链接到先前的提交对象,第一个提交作为父对象。 这个过程可以无休止地重复,创建一个相同数据的链接版本链,所有这些数据都引用整个链。IPFS 确保网络上所有其他节点都可以访问你的文件以及整个文件版本控制历史记录。

IPFS数据更新过程

到目前为止,我们已经讨论了 IPFS 的许多有用特性和关键概念。 然而,所有的协议都有局限性和缺陷。 可以想象,IPFS 当前面临的最大问题是保持文件可用。 网络上的每个节点都会保存他们下载的文件的缓存,并在其他用户需要的时候帮助他们提供这些文件。 但是,在一种简单的情况下,如果一个文档由 4 个节点承载,并且它们都处于离线状态,则该文档不能被访问。

有几种方法可以解决上述问题。 一种方法是鼓励节点保持在线状态,并保持文件对社区开放。 对用户可以提交给网络的存储空间进行奖励,这将确保文件在需要时具有很高的可用性。 另一种方法是在整个网络中主动分发文件,确保在任何给定的时间总是有足够的副本在线。 你可以把这看作是大规模的冗余。

 

FileCoin

这个问题正是 Filecoin 想要解决的问题。 Filecoin 是由创建 IPFS 的同一团队创建的,是一个区块链,它建立在 IPFS 之上,目标是创建一个去中心化的存储市场。 这意味着那些硬盘上有额外存储空间的用户可以把它租出去作为 IPFS 存储空间,并在这个过程中从中获利。 你可以把 Filecoin 想象成一个类似于 Airbnb 的服务——不是出租房子里可用的空间,而是出租电脑里可用的存储空间。 Filecoin 为节点创建了一个保持数据在线并尽可能长时间保留的激励机制。 除了保持节点在线的激励之外,它还通过许多节点复制数据,从而使数据高可用且易于访问(即使少数节点处于离线状态)。 和 IPFS 有着相同的目标,那就是离线优先,这意味着他们一直在努力创造更好的体验,而不需要通过调用服务器来访问资源。

这是一个 Filecoin 的高度快速总结,可以在以后的文章中和来自 Protocol labs 的其他项目一起深入地探讨 Filecoin。

 

总结

可以看出,IPFS 是一个雄心勃勃的项目。 早期的项目集中在去中心化,主要是货币和金融方面。 IPFS 的真正目的是构建一种更好的数据共享方式,以面对以前 HTTP 曾经遇到过挑战。然而,IPFS 显然是最成熟的,并被视为一个在未来几年内可能得到大规模采用的系统。 绝不是在暗示 HTTP 正在消失,Juan Benet 自己也承认 HTTP 是一个很棒的协议,仍然非常有用。 毕竟,HTTP 是一个超过 25 年的协议,随着 IPFS 的采用持续增长,使用场景将随着技术的发展而壮大。 在 IPFS 最终接管之前,我们很可能会出现同时使用两种协议的情况,这非常类似于我们今天仍然使用 FTP 的某些能力。

BB财经|BBcaijing.com原创,作者区块链百科,转载请注明出处:http://www.bbcaijing.cn/baike/43679.html