LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资讯 > IPFS 0.5 对内容路由的改进

IPFS 0.5 对内容路由的改进

2020-08-01 FIL社区 来源:区块链网络

在四月底,协议实验室发布了最新版的go-ipfs系统:IPFS 0.5。这个版本包含了很多改动,但在诸多改动中对IPFS分布式哈希表(DHT)的改动尤为重要,它极大提升了系统在搜索数据时的性能和稳定性。

在接下来的文章中,我们将详细讲解IPFS0.5版本中DHT的状况及实现方式。

背景:DHT在IPFS中是做什么的?

分布式哈希表DHT是将键映射到值的系统。在IPFS中,DHT是内容路由系统的基本组成部分。它把用户需要找的文件的CID映射到具体存储了该CID所对应文件的节点。

有三种类型的键-值对在映射时需要用到DHT。

-提供者记录:它把数据标识符(即多哈希值multihash)映射到一个声称存储了该数据的节点,并且该节点愿意提供用户该数据。IPFS会用这种映射方式寻找内容,PubSub上的IPNS会用这种方式寻找其它成员。

-IPNS记录:它把一个IPNS键(即一个公钥的哈希值)映射到一个IPNS记录(即一个经过签名和标记了版本的指向某路径如/ipfs/bafyXYZ的指针)。IPNS会用这种映射方式。

-对等节点记录:它将一个对等节点ID(peerID)映射到一系列的多地址(multiaddress),系统可以在这些地址中找到该对等节点。当一个节点存储有某内容,但节点的地址未知时,IPFS会用这种映射方式。手动连接(比如“ipfs swarm connect /p2p/QmXYZ”)也会用这种映射方式。

这三种记录每一种在语义上都有细微区别,但他们都用同一个DHT表进行更新和寻址。在IPFS中,DHT表遵循的协议是Kademlia。

Kademlia概述

Kademlia协议的算法已经比较成熟了,网上可以找到很多关于这方面的资料,包括论文和维基百科。本文将挑选一些重要的基础内容进行介绍。

Kademlia的核心是基于三个系统参数构建DHT表,这三个参数是:

-地址空间:系统中所有的对等节点都可以被唯一标识(在IPFS中,节点的标识符为0到2^256-1中的一个数)。

-地址空间中为对等节点进行排序的依据。它将所有的对等节点从小到大(在IPFS中是用SHA256(PeerID)的计算结果,该计算结果为0到2^256-1中的一个数)进行可视化排序。

-映射。它将一个记录的键进行计算得到其在地址空间中的位置,在该位置可以找到对应的节点(在IPFS中用SHA256(Record Key)的计算结果)。

当有了地址空间和节点排序的依据后,我们就可以在一个经过排序的网络中进行搜索。这时整个系统系统就像一个跳转列表(skip list),列表中节点间的距离为1,2,4,8,16……。我们在搜索列表时所耗费的时间与对数相关(即O(log(N)))。

但与纯粹的跳转列表不同的是,Kademlia不是稳定的,因为节点可以随时加入或离开网络。为了处理这个不稳定性Kademlia节点并不按照1,2,4,8……这样的方式为节点安置链接数,而是给每个节点安置一个固定值K(在IPFS中这个K为20)个链接。比如系统会在65和128之间安置20个链接。

值得注意的是,对参数K的设定不是随意的,而是根据网络发布信息的频率等状况设定的。

系统参数(如K)的设置要最大化保证网络维持联通并且没有数据丢失的状况,同时还要保证查询延迟时间不能太久。这是Kademlia中决定参数设置的两个主要因素。

我是IPFS/Filecoin社区发起人晓熙(加入社区,联系v号: liandaoxixi),IPFS/Filecoin是全球共识最大的去中心化存储项目,我会定期在社区分享专业的资讯,为IPFS/Filecoin爱好者建设一个共赢的学习社区。

参考链接:https://blog.ipfs.io/2020-07-20-dht-deep-dive/

—-

编译者/作者:FIL社区

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

LOADING...
LOADING...