IPFS快速入门-起源与原理

  • 0_1540174057406_9ae58989-944f-495c-b13a-c57c85a74f35-image.png
    互联网是我们日常生活中最重要的工具,通过互联网我们可以查看新闻、与朋友和家人交流、与同事互动、学习新知识、以及进行理财。然而,我们所了解和喜爱的互联网存在缺陷。其中,最大的一点缺陷是它上面的信息大部分是集中式的(集中在一起)。这意味着我们每天访问的信息都保存在,受到公司控制的中央服务器上。

    行星际文件系统IPFS的目标,是创建分布式Web(去中心化的网络)。一个对等网络超媒体协议,使网络更快、更安全、更开放。

    两个'中心'问题

    集中化带来了两个主要问题。第一个是当你有一个控制大量数据的中央公司时,如果无法访问这些服务器会发生什么?一个控制存储大量有价值和有用数据的服务器的中央公司成为了一个单一故障点。这种失败可能是由于攻击造成的,也可能是因为一个简单的服务器离线。

    将数据存储在中心位置的第二个问题是审查制度。当大量数据托管在几个主要服务器上时,相关机构更容易阻止对它们的访问。2017年,土耳其居民无法访问维基网站。因为土耳其政府禁止该网站称其为“国家安全威胁”。这种情况也发生在2011年1月的埃及,当时政府切断了95%以上公民的网络。

    为何我们要使用一个有缺陷的系统?

    我们继续接受这种模式的真正原因。一方面是因为已经对互联网接入产生极大的依赖,我们希望网页以毫秒为单位加载图像和视频,而没有延迟显示。而这一切需具有最高的HD或4K的质量,集中式服务器使公司可以完全控制提供内容的速度,并相应地收取费用。另一个原因,是因为我们没有一个更好的选择。

    IPFS,一个好的选择

    InterPlanetary文件系统,也称为IPFS。是一种使Internet完全去中心的想法。该概念将传统的“HTTP”互联网转变为对等网络,类似于BitTorrent的工作方式。

    Juan Benet是IPFS的创建者和协议实验室的创始人。协议实验室主要负责IPFS的技术研发,同时还开发了Filecoin和IPLD(以及其他一些项目)。Benet在斯坦福大学学习计算机科学,并且非常关注与知识、科学和技术有关的任何事情。

    0_1540174202537_03c2a577-8ac7-4a43-be08-4d91d6c23e7b-image.png

    Juan Benets最初的目标,并不是在构思这个概念时创建IPFS。他想要做的是找到一种有效的方法来移动科学数据集,这意味着数据大小在10-100+GB。IPFS的设计看起来像,Git和BitTorrent综合在一起的结晶。BitTorrent使你能够快速地在网络上移动大型文件,而Git提供内置的数据版本。

    0_1540174234993_982ff233-8db8-4fff-92fc-3f721e58c764-image.png

    在创建此协议之后,Benet很快意识到其影响远大于移动大型数据集。他实际上已经创建了一个协议,可以取代其他通用的协议,用于我们今天如何通过网络更快的访问信息。

    行星际文件系统的名称来源?

    当提出命名为行星际文件系统(IPFS)时,他们的想法是如何表达对互联网命名的一点敬意。JCR Licklider是Arpanet(互联网的前身)的创始人,其目标是建立一个星际网络。因此,互联网其实际上是星际网络的缩影,InterPlanetary采用了相同的命名方式,此外,IPFS旨在成为Internet协议(IP)的文件系统(FS)。当你把它们放在一起时,就形成了IPFS,即互联网文件系统。

    接下来将深入探讨IPFS作为一个文件系统是如何工作的。但首先,需要了解我们今天是如何从网络上访问文件的。

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

    0_1540174290963_c7fa1c59-7972-459d-a716-c10bc549745d-image.png

    宕机问题

    当服务器宕机时,使用基于位置的寻址,该服务器中包含的所有内容都不能通过互联网访问。然而,当服务器出现故障时,另一个用户很可能已下载了所需图像,并将其存储在了自己的计算机上。但即使另一台计算机确实有此文件,你的计算机也不能连接到其他计算机来传输该文件。

    如何解决?

    为了帮助解决这个问题,IPFS引入了“基于内容寻址”的概念。在请求特定资源时使用基于内容的寻址,无需指定位置,只需指定寻找的内容即可。

    每个文件都有一个唯一的哈希值,可以将其视为文件的指纹或标识。如果要访问特定文件,只需向网络询问具有指定哈希值的文件副本即可。请求完成后,IPFS网络上的某个人将提供你请求的资源。你将下载该资源,并将一个副本保存到你的IPFS缓存中。现在,当另一个人请求相同的文件时,你将能够提供给他们,这样就创建了一个系统。该系统使用的越多,其运行速度就越快,因为共享的文件越多,它们就越容易在大量节点之间获得文件。

    改变是好的,有什么保障?

    在这一点上,我猜测你的问题和我现在做的一样。如何知道提供给我文件的人或节点没有以某种方式篡改它?因为你使用哈希函数来检索文件,所以可以验证收到的内容。更改文件的哈希值,像更改区块链中的事务一样困难。请求具有特定哈希的文件,在收到文件时,需要确保文件哈希与请求的哈希匹配。这与在亚马逊上用于验证购买的方法相同。如果你订购了一双绿色的袜子,收到的是一双红色袜子,你可以拒绝它们并等待绿色袜子的出现。

    IPFS的另一个功能是重复数据删除,这意味着当多个用户发布同一文件时,它只在网络上创建一次。这有助于提高网络效率。

    IPFS如何真正起作用

    现在,你已经知道了IPFS与当今传统方法的区别。接下来,让我们更深入地了解IPFS实际是如何存储数据,并使其可供用户访问的。

    在IPFS中,文件存储在IPFS Object(对象)中,每个Object可以存储256 kb的数据。Object还可以包含指向另一个IPFS对象的链接,链接可以存储大于256 kb的数据。例如,如果您你上传一个小文本文件,那么一个256 kb的对象应该适合你的少量文本。

    0_1540174406297_de9ed511-ec8f-4df7-82e3-bf4e73a8a2e4-image.png

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

    0_1540174458969_d47d6860-029b-416a-8522-21be898ad888-image.png

    这种架构非常简单,但它也非常强大,该架构真正使IPFS能够用作文件系统。如果你查看下面的简单文件目录结构,我将解释如何将其转换为IPFS结构:

    0_1540174483974_8e3d7651-7426-4cd8-b1ad-d024cee69bd2-image.png

    通过为每个文件和每个文件夹/目录创建1个Object(对象),然后将文件链接到指定的目录,可以将其转换为IPFS。但是,当你考虑到IPFS使用基于内容寻址的事实时,它会变得更好。这意味着添加的文件是不可变的,它们永远不会被更改,非常像区块链。这意味着你可以放心,访问的资源是正确的数据,并且从未被更改过。

    0_1540174509570_e5d7a037-ee21-42a8-9017-e9c5aef12ec4-image.png

    如何更新我的数据?

    IPFS支持文件版本控制,这类似于Git作为开源代码库的运作方式。例如,你正在处理一个名为“Imp.nt Document–v1.doc”的文本文件,并且希望与使用IFPS的人共享此文档。当你将此文件添加到IPFS时,背后发生的事情是,IPFS将创建一个新的Commit(提交)对象。这个Object(对象)是非常基本的,它只是告诉IPFS哪个Commit在这个之前,并且它将会链接到与文件相关的IPFS对象'Imp.nt Document–v1.doc'。

    0_1540174537496_e9e1fc67-f100-417e-85bd-b3cf524fa33d-image.png

    现在让我们假设已经过了一段时间,你的'Imp.nt Document–v1.doc'需要修改。只需将新文件添加到IPFS“Imp.nt Document–v1.doc”即可完成此操作,软件将为更新的文件创建新的提交对象(与原始进程相同)。此提交对象现在链接到先前的提交对象,第一个提交用作为父对象。这个过程可以无休止地重复,创建一个链接的相同数据版本,所有这些都引用整个链。IPFS确保你的文件,以及整个文件版本控制历史记录,可供网络上的所有其他节点访问。

    0_1540174560241_12f0592d-2bea-4ab3-9767-b9f77b4832c4-image.png

    没有系统是完美的

    到目前为止,我们已经讨论了InterPlanetary文件系统的许多有用功能和关键概念。但是,所有协议都有局限性和缺点。正如你可能想象的那样,IPFS目前面临的最大问题是保持文件可用。网络上的每个节点都会保留已下载文件的缓存,并有助于使其可用,因为其他用户需要它们。但是,在一个简单的情况下,如果一个Document由4个节点托管,并且它们全部脱机,则该文档将不能够访问。

    有几种方法可以解决上述问题。一种方法是激励节点保持在线并使文件可供社区使用。对可以提交给网络的存储空间进行奖励,这将确保文件在需要时可用。另一种方法是主动在整个网络中分发文件,确保在任何给定时间总是有足够的在线副本。可以把它想象成大规模的冗余。

    Filecoin

    这个问题是Filecoin旨在解决的确切问题。Filecoin由创建IPFS的同一团队创建。Filecoin是一个建立在IPFS之上的区块链,其目标是创建一个分散的存储市场。这意味着在硬盘上有额外存储空间的用户,可以将其出租用作IPFS存储,并在此过程中从中赚取一些收入。可以将Filecoin视为与Airbnb类似的服务,只不过不是租用你家中的可用空间,而是租用计算机上的可用空间进行存储。Filecoin为节点创建了一种激励,使数据保持在线并尽可能长时间保留。除了保持节点在线的激励之外,它还可以跨多个节点复制数据,使其高度可用且易于访问(即使少数节点处于脱机状态)。Filecoin和IPFS具有相同的目标,即脱机优先,这意味着他们不断努力获得更好的体验,而无需调用服务器来访问资源。

    0_1540174593142_ea2b2ae2-976c-4b56-a27b-8df35700921c-image.png

    行星际关联数据(IPLD)

    IPLD是内容可寻址网络的数据模型,它允许我们将所有与哈希相关的数据结构,视为统一信息空间的子集,统一所有将数据与哈希作为IPLD实例链接的数据模型。“

    这意味着IPLD旨在成为可互操作协议的数据模型。这种技术有很多使用案例,这提供了在IPFS上运行智能合约的能力。关键在于IPLD提供了使基础数据可以跨工具和协议进行互操作的库。

    IPLD和Filecoin都是非常复杂的项目,要想完全理解还需要阅读专业文章。

    总 结

    IPFS是一个非常具有前景的项目,以权力下放(去中心化)为重点的大多数早期项目,主要涉及货币和金融方面。IPFS实际上是建立一种更好的共享数据的方式。以前的HTTP将面临挑战,IPFS显然是最成熟的,并且被视为可以在未来几年中大规模采用的系统。我绝不暗示HTTP正在消失,Juan Benet自己也承认HTTP是一个很棒的协议,它仍然非常有用。但是,它是一个超过25年的协议,随着IPFS在采用中的不断增长,用例将随着技术的发展而扩展。直到IPFS最终接管之前,我们很有可能会同时使用这两种协议。

    本文由 JAY FRIED 发表于国外博客,经由Filecoin中国社区翻译整理。

    识别二维码进入IPFS-Filecoin社群

    0_1540174653717_dcfac84c-2f79-4639-a116-2507b4290972-image.png

登录后回复
 

加微信进群交流

与 Filecoin中国社区 的连接断开,我们正在尝试重连,请耐心等待