区块链大本营

让区块链回归技术和应用的本质,联系我们:heyc@csdn.net。

IPFS 深入浅出:从《黑镜》说起

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Blockchain_lemon/article/details/85960445

640?wx_fmt=jpeg

翻译 | 老曹

编辑 | 波波

 

元旦期间,《黑镜:潘达斯奈基》的互动式剧情唬住了不少人。

可在自小玩游戏的营长看来,这个互动式剧情却不是什么新鲜玩意,十年前的《质量效应》游戏早就把它玩腻了,而游戏剧情的最终结局却是虎头蛇尾,可有可无。

 

640?wx_fmt=png

 

所以,遍历312分钟全部支线剧情的苦活,营长没心思去做,除了那个藏在深处的游戏彩蛋:

但有不少人为了参与这场剧情互动,千辛万苦弄来 Netflix 账号,忍受着上千的延迟和掉帧来接收 Netflix 服务器上传来的流媒体视频。

这个技术现象倒是激起了营长的兴趣,一查 Netflix 的 CDN 资料,果然,离我们最近的服务器都位于香港:

 

640?wx_fmt=png

 

不是营长挑剔,现在回想一下,我们可能确实被这些中心化的互联网服务惯坏了——毫秒级的网页加载,点击就能看到;零延迟的视频、游戏,不能有一丝卡顿;同时,画质不是 1080p 或 4K 以上,你都不好意思说自己用的是高清……

为了用户看视频的体验爽,Netflix 不得不反复造轮子,把用户们要看的视频存储到离他们最近的 CDN 服务器上,仅在美国就部署了数百个这样的视频库。

尽管想尽办法省钱,视频流媒体这样的生意还是太烧钱了。

前不久,全球最大的 CDN 服务商找到了一个新办法,整合去中心化的 IPFS,一种基于区块链分布式存储技术:

 

640?wx_fmt=png

 

IPFS 是什么?

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

640?wx_fmt=png

 

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

640?wx_fmt=png

 

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

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

 

网络文件访问基础

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

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

 

640?wx_fmt=png

 

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

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

 

IPFS的工作原理

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

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

640?wx_fmt=png

 

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

640?wx_fmt=png

 

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

640?wx_fmt=png

 

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

 

640?wx_fmt=png

 

IPFS 中的数据更新

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

 

640?wx_fmt=png

 

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

 

640?wx_fmt=png

 

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

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

 

FileCoin

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

 

640?wx_fmt=png

 

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

 

总结

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

 

相关链接:

  • https://achainofblocks.com/2018/10/05/ipfs-interplanetary-file-system-simply-explained/

  • https://www.nytimes.com/2011/01/29/technology/internet/29cutoff.html

  • https://gateway.ipfs.io/ipfs/QmY9QujtSgeiqic18CrmUGt5VqVvyr26WkuXCZTW65txX8/juan-benet.headshots-and-bio/ 

  • https://ipfs.io/

  • https://blockonomi.com/interplanetary-file-system/

  • https://ipld.io/

 

640?wx_fmt=png

 

推荐阅读:

 

 

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试