LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > NDN研讨会:有关IPFS的灵魂问答

NDN研讨会:有关IPFS的灵魂问答

2020-06-05 Firefly萤火区块链 来源:区块链网络

命名数据网络项目(The Named Data Networking project以下简称NDN)是网络领域的以信息为中心的旗舰项目。该项目正在构建一个网络层,以信息为中心(即内容可寻址)的协议栈。始于约十年前,由NSF资助以及美国10所大学合作研究。

IPFS和NDN拥有在内容可寻址网络上的相同的愿景,但是运作方式却截然不同。NDN是本地网络层模式,而IPFS是应用程序层模式。

鉴于项目的共同愿景,我们对本次展示环节非常兴奋,尤其是讨论和反馈。共有20多人参加了此次演讲。

以下是在演示过程中提出的问题的摘要。

问:区块大小是多少?用户可以使用不同的大小块吗?

答:使用的默认块大小为256 KB。是的,用户/应用程序可以使用ipfs add命令的-s(–chunker)选项来定义块的大小以及块算法。

问:Merkle-Tree是如何创建的?

答:当用户将文件添加到其本地IPFS节点时,会在本地创建Merkle-DAG结构(称为行星际链接数据或IPLD)。在IPFS网络中发布文件时,该文件不会在其他节点中复制。这是有意为之的,目的是避免在未经用户端同意的情况下将内容添加到用户端的本地存储。取而代之的是,该文件最初由用户端分发,并根据请求将其发布到网络。同时,任何从初始文件中进行检索的节点也可以充当资料的提供者,从而为内容创建缓存网络。当将文件发布到网络时,“提供者记录”会放在DHT中以指向本地节点进行检索。如果网络中的其他用户端希望成为文件的永久提供者,则也可以“锁定”文件。如果他们没有锁定文件,那么文件最终将被执行“垃圾回收”操作。

问:从体系结构的角度来看,如何将文件添加到系统中?特别是,您如何让全世界知道您添加了什么以及位置在哪里?同样,我如何知道其他人已添加到系统中?

答:IPFS体系结构中没有任何机制可以跟踪在网络中发布的文件。如果想让全世界知道有新添加的内容/ CID,必须 “离带(off-band)”发生。该主题与IPFS社区中正在进行的有关“去中心化搜索引擎”的讨论有很大关系,但是迄今为止,还没有任何实质性的成果。也就是说,这个话题引起了Protocol Labs和整个社区的极大关注。

IPNS,及其支持的PubSub协议是传播有关新发布内容信息的另一种方法。应用程序可以使用此选项在应用程序本身的领域内传播(即推送)有关新内容的信息。当IPNS在DHT之上运行时,它也可以进行拉动式(pull-based)工作。

问:我是否需要具有Merkle-Tree的整个结构才能对其中的一部分进行检索?如果我只想检索部分文件,那CID根似乎还差点意思。

答:用户不需要具有Merkle-DAG的整个结构即可对其中的一部分进行检索。为了仅对Merkle-DAG的一部分(由一个或多个CID块组成)进行检索,用户需要持有这些特定的CID。此外,您可以使用根CID和路径符号来访问Merkle-DAG中的文件,例如

Qmcri6S86LuivUY4FDcM1phu5REXcFYootxn1GsRoqnFN5 / path / to / some / file.png。

问:一旦为区块分配了CID,该区块是否会一成不变

答:是的,一旦计算出区块的CID,它将永远保持不变。众所周知在SVN,git等版本控制系统中,这便是“永久Web”的基础理念。我们认为这是存储和交付系统的重要属性。当然,该块本身并不是一成不变的,可以对其进行更改。但是,新文件的CID将与旧文件会不匹配,因此必须单独添加新版本(除非内容是通过IPNS在公共密钥下发布的)

问:如何从IPFS网络撤销CID?

答:这样的CID是永久性的,并且不能被“撤消”,因为它是特定内容的哈希值(请参见上面对“永久性网络”的评论)。不再希望提供对某些内容的访问权的用户可以简单地停止“提供”该内容,换句话说,停止发布相应的提供者的记录。但是,这并不意味着内容会从网络中消失,因为已检索到该内容的其他用户端可能仍将其保留在其缓存中并进行提供。

另外,Protocol Labs提供的IPFS网关具有CID拒绝列表。,此列表中的CID被双重哈希处理以保护其内容,并且IPFS网关在提供内容之前会进行检查是否已拒绝/阻止该内容。

问:是否可以检查特定的CID的删除状态(即是否已被添加到拒绝列表中)?

答:要检查CID是否在给定网关的拒绝列表中,您可以尝试在网关上解析该CID并获取HTTP响应代码,该代码将通知您是否已拒绝它。每个拒绝列表都由运营组织单独维护-整个IPFS网络没有全局拒绝列表。

问:拒绝者列表似乎并不属于去中心化的基础架构。

答:任何个人或组织都可以运行公共IPFS网关并操作自己的拒绝列表。从这个意义上讲,拒绝列表的(内容)不是由集权式实体决定的。

问:IPNS记录保存在哪里?

答:IPNS使用与内容路由相同的基础架构,即DHT。用户端公钥的多重哈希值在DHT上注册,以指向可变内容。同时,还有其他分发IPNS记录的方法:为此目的,使用了称为gossipsub的pubsub协议(也是一种规范),作为快速分发IPNS记录的一种方法。如前所述,PubSub与DHT上IPNS的区别在于推动(PubSub)与拉动(DHT)模式的差异。

问:其他节点如何知道它们拥有名称的正确密钥?

答:当节点在DHT上查找IPNS名称时,它会从DHT指定的所有用户端检索记录以存储数据。由于记录具有序列号,因此客户端可以轻松确定与IPNS密钥相对应的最新值。还有一个DHT查找快捷方式,用户无需等待查找完成就可以决定等待接收记录的定额Q(当前设置为Q = 16),然后再确定它有足够的信息来确定此最新的记录。

问:如果存储IPNS记录的节点脱机,则IPNS记录会丢失,并且如果有人未在24小时内更新它,则无法提供该记录?

答:这是正确的,IPFS记录的发布者(即不变的CID)也是如此。可能发生以下两种情况之一:如果已请求该内容,并且该内容已由其他某个节点检索和缓存,则可以由缓存节点为其提供服务。

如果已检索(和缓存)该内容的一个(或某些)用户端决定继续保存/提供该内容,则可以“锁定”它,这意味着它们已成为该内容的永久提供者。

问:缓存内容时,系统如何知道缓存的内容以及如何使用/解析该内容?

答:缓存内容的用户端还将提供者的记录发布到DHT,以声明它们也是其缓存中所有内容项的提供者。

问:缓存的内容是否与内容的原始副本相同?

答:直到下一个“垃圾回收”日期之前,在该时间段内,可以解析和提供缓存的内容,除非“锁定”缓存的内容(否则,将永久复制,直到用户做出改变),否则过期。请注意,在撰写本文时,默认情况下,垃圾收集处于关闭状态。

问:您必须确切地知道要寻找什么。DHT很好,但是很难知道其中有什么。CID和真实身份信息之间的绑定在哪里进行?

答:IPFS是一个分布式文件系统,用于在面向最终用户的内容发现(例如,当前如何使用HTTP寻址/托管Google搜索服务的站点)。IPFS管理为特定CID提供,存储和获取内容;其余的(将用户连接到与该应用程序相关的CID或首先找到该应用程序)必须发生在IPFS本身之上的一层。

问:在谈话开始时,您提到目的是从网络(即外部实体)中去信任。你能详细说明吗?您如何相信某个内容将通过某个密钥发布?

答:通过自己的哈希命名内容并将其发布在分布式P2P网络中,从本质上克服了与将信任放入外部实体(例如内容托管和内容解析实体)相关的一些问题。内容可以自我验证,因此可以在本地验证。只要该内容是由发布者的私钥进行签发的,内容消费者就可以在不依赖外部实体的情况下验证内容的真实性。

感谢所有参加此次演讲的人,以及NDN组织这次活动并邀请我们!

编译/萤火虫矿机

—-

编译者/作者:Firefly萤火区块链

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...