电子说
(文章来源:网络整理)
IPFS是对等(p2p)存储网络。可以通过可能中继信息或存储信息(或同时做这两者)的对等方访问内容,并且这些对等方可以位于世界任何地方。IPFS知道如何通过其内容地址找到您要的内容,而不是在哪里。首先让我们看一下内容寻址以及该内容如何链接在一起。IPFS堆栈的“中间”部分将生态系统连接在一起。一切都建立在能够通过链接的唯一标识符查找内容的基础上。
IPFS使用内容编址通过内容中的内容而不是内容的位置来标识内容。您一直都在按内容查找项目。例如,当您在图书馆里寻找一本书时,经常会要求书名。这是内容寻址,因为你问什么是。如果您使用位置寻址,找到那本书,你会问它通过在那里它是:“我想要的书那是在二楼,第一组,倒数第三架,左四周书”。如果有人搬了那本书,那你真倒霉!
通过散列进行内容寻址已成为从分布式支持代码到运行加密货币的区块链的分布式系统中连接数据的一种广泛使用的方法。但是,这些系统中的基础数据结构不一定可以互操作。
这就是IPLD项目的来历。哈希标识内容,而IPLD在数据结构之间转换。由于不同的分布式系统以不同的方式构造其数据,因此IPLD提供了一些库,用于组合可插拔模块(每种IPLD节点的解析器)来解析多个链接节点之间的路径,选择器或查询(允许您探索数据,无论其基础是什么)。协议)。IPLD提供了一种在内容可寻址的数据结构之间进行转换的方法:“哦,您使用Git样式,不用担心,我可以关注这些链接。哦,您使用以太坊,我知道了,我也可以关注那些链接!”
IPFS协议使用IPLD从原始内容获取IPFS地址。IPFS对于如何将数据分解为DAG有其自己的偏好和约定;IPLD使用这些约定将IPFS网络上的内容链接在一起。IPFS生态系统中的其他所有内容都基于此核心概念:链接的可寻址内容是使其余工作正常进行的基本连接元素。IPFS和许多其他分布式系统利用了称为有向无环图或DAG 的数据结构。具体来说,它们使用Merkle-DAG,它们是DAG,其中每个节点都有一个标识符,该标识符是节点内容的哈希值。听起来有点熟?这涉及到上一节中介绍的CID概念。查看此CID链接数据概念的另一种方法:通过其哈希值识别数据对象(如Merkle-DAG节点)是内容寻址。
IPFS使用为表示目录和文件而优化的Merkle-DAG,但是您可以采用许多不同的方式来构造Merkle-DAG。例如,Git使用Merkle-DAG,其中包含许多版本的仓库。为了建立内容的Merkle-DAG表示,IPFS通常首先将其分成多个块。将其拆分为多个块意味着文件的不同部分可以来自不同的来源,并且可以快速进行身份验证。
Merkle-DAG有点“全力以赴”。也就是说,所有内容都有CID。您有一个具有CID的文件。如果一个文件夹中有几个文件怎么办?该文件夹具有一个CID,并且该CID包含下面文件的CID。反过来,这些文件由块组成,并且每个块都有一个CID。您可以看到如何将计算机上的文件系统表示为DAG。希望您还可以看到Merkle-DAG图如何开始形成的。要直观地了解这个概念,请查看我们的IPLD Explorer。
Merkle-DAG的另一个有用功能是将内容分成多个块,如果您有两个相似的文件,它们可以共享Merkle-DAG的一部分。也就是说,不同Merkle-DAG的一部分可以引用相同的数据。例如,如果您更新网站,则仅更改的文件将获得新的内容地址。您的旧版本和新版本可以为其他所有内容引用相同的块。这可以使传输大型数据集的版本(例如基因组研究或天气数据)更加高效,因为您只需要传输新的或已更改的部分,而不必每次都创建全新的文件。
因此,总而言之,IPFS允许您为内容提供CID,并使用IPLD在Merkle-DAG中将内容链接在一起。现在,让我们继续最后一部分:如何查找和移动内容。为了查找哪些对等方正在托管您要查找的内容(发现),IPFS使用分布式哈希表或DHT。哈希表是值键的数据库。甲分布式哈希表是其中所述表在所有的对等体在一个分布式网络分割。要查找内容,请问这些同行。
该libp2p项目是IPFS生态系统提供连接,并互相交谈的DHT和手柄同行的一部分。一旦知道了内容的位置(即哪个或哪些对等方正在存储构成您所要访问的内容的每个块),就可以再次使用DHT 查找这些对等方的当前位置(路由)。因此,为了获得内容,您可以使用libp2p两次查询DHT。
您已经找到了内容,并且已经找到了该内容的当前位置-现在您需要连接到该内容并进行获取(交换)。为了向其他对等方请求块并向其他对等方发送块,IPFS当前使用名为Bitswap的模块。Bitswap允许您连接到具有所需内容的一个或多个对等节点,将其发送给您的需求列表(您感兴趣的所有块的列表),然后让他们向您发送您请求的块。这些块到达后,您可以通过对它们的内容进行哈希处理以获取CID来对其进行验证。
还讨论了其他内容复制协议,其中最发达的是Graphsync。正在讨论中的一项提案,旨在扩展Bitswap协议以在请求和响应周围添加功能。
(责任编辑:fqj)
全部0条评论
快来发表一下你的评论吧 !