请选择 进入手机版 | 继续访问电脑版
开启辅助访问
链路首页链路财经目前收录 币种 : 4908 交易所 : 310钱包 : 17 24H 交易量 : $43,403,137,051 总市值 : $245,388,183,835
2019
03/17
14:42
分享
评论
  • 将内容固定在IPFS节点上有两种主要方法:


           向IPFS节点添加本地文件:添加本地文件是内容首先成为IPFS网络的一部分的方式,也是使用我们的pinFileToIPFS端点将文件上载到pin时会发生的事情。本质上,我们通过API接收您的文件,然后将其直接发送到要固定的节点。

           通过它的散列(content - identifier)检索内容并固定它:IPFS还允许您固定存在于IPFS网络上但不驻留在您的机器上的内容。这是在使用addHashToPinQueue或pinHashToIPFS端点时发生的情况,也是我们将在本文中关注的用例。


    哈希固定-更深入的看


           快速提醒:当文件添加到IPFS节点时,节点将返回文件的内容标识符(CID)。从IPFS节点返回的CID是通过密码散列函数运行文件的直接结果。因此,CID通常被称为内容的“散列”,在本文的其余部分中,我们将以这种方式引用CID。


           当一个节点连接到IPFS网络时,节点拥有的内容经常在IPFS分布式哈希表(DHT)上广播。这意味着节点告诉所有其他节点它有特定的内容。这样,如果有人向这些节点请求该内容,他们就知道应该将请求节点指向哪个节点。

    多地址


           这里需要理解的一个关键概念是,当节点使用DHT“搜索内容”时,它实际上是在搜索谁拥有该内容。请求节点使用DHT查明哪些节点具有它要查找的内容,以及这些节点位于何处。如果请求节点能够找到包含它正在寻找的内容的节点,IPFS网络最终将返回承载所需内容的节点的“多地址”。多地址看起来是这样的:


    /ip4/123.456.78.90/tcp/4001

    /ipfs/QmAbCdEfGhIjKlMnOpQrStUvWxYzAbCdEfGhIjKlMnOpQr



           多地址的格式可以不同,因此“多地址”的“多”部分,但需要注意的是,多地址为请求节点提供了以下几点:


    使用哪些协议与节点通信

    节点的IP位置

    可以到达节点的哪个端口

    节点的唯一对等ID


    内容检索

          如上所述,请求节点使用DHT查找承载其正在查找内容的对等节点的多地址。一旦找到这个多地址,请求节点就通过IPFS的“群集”功能直接连接到主机节点,并开始检索内容。


           与请求节点使用DHT来定位它们想要使用的内容类似,希望锁定网络上已经存在的内容的节点也使用DHT来定位它们想要锁定的内容。


          与此相关的一个常见问题是,通常需要一段时间才能找到承载内容的节点。


          原因有很多。两个常见的原因是:


    主机节点最近刚刚连接到IPFS网络

    主机节点连接到很少的其他节点


           这两个问题都源于这样一个事实:请求内容的节点和承载该内容的节点之间常常存在相当程度的分离。


    如果我们能加快这个过程不是很好吗?

    加速内容发现


          如果请求节点的所有者已经知道内容存储在特定的节点上,那么该节点遍历DHT来找出哪个节点拥有该内容就没有多大意义了。

          对于直接连接,请求节点在主机节点上有一个用于内容发现的“快车道”。当请求节点发送内容请求时,不必等待它的对等节点找出承载该内容的主机,其中一个对等节点实际上就是承载该内容的节点。这允许接近即时响应时间。一旦请求节点发现主机节点拥有它想要的内容,它将检索用于固定的内容。

          在这个场景中,我们减少了大量的初始时间,否则,请求节点将花费大量时间搜索它想要的内容的位置。

    这是如何在Pinata中实现的


    本周我们的新功能可以在addHashToPinQueue或pinHashToIPFS端点中看到。现在,当提供一个散列到pin时,您可以提供内容已经驻留的最多五个节点的多地址。


    如果我们的API注意到您在请求中提供了主机节点,我们将在尝试固定内容之前直接连接到这些节点!这允许我们通过删除固定内容的节点发现过程来利用本文前面提到的速度优势。

    找到你多地址


    要查找正在运行的节点的多地址,只需运行:

    ipfs id

    你的回答应该是这样的:

    {
    "ID": "NodeID",
    "PublicKey": "NodePublicKey",
    "Addresses": [
    "/ip4/127.0.0.1/tcp/4001/ipfs/NodeID",
    "/ip4/XXX.XXX.XXX.XXX/tcp/4001/ipfs/NodeID",
    "/ip6/::1/tcp/4001/ipfs/YourNodeID",
    "/ip6/YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY/tcp/4001/ipfs/NodeID",
    "/ip6/YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY/tcp/4001/ipfs/NodeID",
    "/ip6/YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY:YYYY/tcp/4001/ipfs/NodeID",
    "/ip4/XXX.XXX.XXX.XXX/tcp/4001/ipfs/NodeID",
    ],
    "AgentVersion": "go-ipfs/0.4.17/",
    "ProtocolVersion": "ipfs/0.1.0"
    }

    在响应中,您应该看到一个“address”数组,其中列出了节点的不同多地址。根据您的网络配置,您可能会列出一些条目,但是您需要注意的是包含您机器的“外部”IP地址的条目。要再次检查您的机器的外部地址,请检查这个方便的工具或在您的服务器的命令行运行以下命令:

    dig +short myip.opendns.com @resolver1.opendns.com

    如何在请求中提供主机节点


    要在addHashToPinQueue或pinHashToIPFS请求中提供主机节点的多个地址,只需将“host_nodes”属性添加到请求POST主体中,如下所示:

    {
    hashToPin: (Your Content's Hash Goes Here),
    host_nodes: [
    /ip4/host_node_1_external_IP/tcp/4001/ipfs/node_1_peer_id,
    /ip4/host_node_2_external_IP/tcp/4001/ipfs/node_2_peer_id,
    .
    .
    .
    ]
    }

         这是它!通过为您的主机节点提供多地址,您可以为已经托管的内容享受明显更快的固定时间。对于那些试图将内容固定在最近才连接到网络的节点或节点的对等连接计数较低的节点上的客户来说,这种速度的改进尤其显著。


    结论

           在已经知道哪些节点承载所需内容的情况下,可以通过让接收节点在尝试pin之前手动将IPFS连接到主机节点,从而显著降低内容检索/固定时间。这消除了接收节点在检索内容之前通过IPFS DHT搜索主机节点的需要。


    欢迎访问赛道中国官方网站,更多产品优惠等你来拿!

    http://www.ipfs-fil.com


主题帖 118 关注 0 粉丝 0
情感指数

链路大数据分析置信度 24.22 %

TA的主题帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表