1

我是 P2P 网络的新手,目前我尝试了解 Kademlia 论文指定的一些基本内容。我无法理解的主要事情是 Kademlia 距离度量。所有论文都将距离定义为两个 ID 的 XOR。ID 大小为 160 位,因此结果也有 160 位。问题:将这个距离表示为整数的便捷方法是什么?我检查过的一些实现使用以下内容:距离 = 160 - 前缀长度(其中前缀长度是前导零的数量)。这是正确的方法吗?

4

1 回答 1

1

我检查过的一些实现使用以下内容:距离 = 160 - 前缀长度(其中前缀长度是前导零的数量)。这是正确的方法吗?

这种方法基于对 kademlia 论文的早期修订,不足以实施最终论文的一些后续章节。

一个成熟的实现应该使用一个树状的路由表,该表按照桶在键空间中的绝对位置对桶进行排序,当桶分裂发生时可以调整其大小。

ID 大小为 160 位,因此结果也有 160 位。问题:将这个距离表示为整数的便捷方法是什么?

距离度量是 160 位整数。您可以使用大整数类或基于数组滚动您自己的类。要获得共享前缀位计数,您只需计算前导零,它与网络大小成对数比例,一旦完成,通常应该适合更小的整数。

于 2018-02-04T14:37:39.023 回答