如何将 Kademlia 距离度量表示为整数
How to represent Kademlia distance metric as integer
我是 P2P 网络的新手,目前我试图理解 Kademlia 论文中指定的一些基本内容。我无法理解的主要是 Kademlia 距离度量。所有论文都将距离定义为两个 ID 的 XOR。 ID 大小为 160 位,因此结果也有 160 位。
问题:将此距离表示为整数的便捷方法是什么?
我检查过的一些实现使用以下内容:
distance = 160 - 前缀长度(其中前缀长度是前导零的数量)。
这是正确的做法吗?
Some implementations, that I checked, use the following: distance = 160 - prefix length (where prefix length is number of leading zeros). Is it correct approach?
该方法 不足以实施最终论文的某些后续章节。
一个完整的实现应该使用树状路由 table,它根据桶在键空间中的绝对位置对桶进行排序,当桶分裂发生时可以调整大小。
The ID size is 160 bits, so the result is also has 160 bits. The question: what is a convenient way to represent this distance as integer?
距离度量是 160 位整数。您可以使用大整数 class 或基于数组滚动您自己的整数。要获得共享前缀位数,您只需计算前导零,它与网络大小成对数关系,完成后通常应该适合更小的整数。
我是 P2P 网络的新手,目前我试图理解 Kademlia 论文中指定的一些基本内容。我无法理解的主要是 Kademlia 距离度量。所有论文都将距离定义为两个 ID 的 XOR。 ID 大小为 160 位,因此结果也有 160 位。 问题:将此距离表示为整数的便捷方法是什么? 我检查过的一些实现使用以下内容: distance = 160 - 前缀长度(其中前缀长度是前导零的数量)。 这是正确的做法吗?
Some implementations, that I checked, use the following: distance = 160 - prefix length (where prefix length is number of leading zeros). Is it correct approach?
该方法
一个完整的实现应该使用树状路由 table,它根据桶在键空间中的绝对位置对桶进行排序,当桶分裂发生时可以调整大小。
The ID size is 160 bits, so the result is also has 160 bits. The question: what is a convenient way to represent this distance as integer?
距离度量是 160 位整数。您可以使用大整数 class 或基于数组滚动您自己的整数。要获得共享前缀位数,您只需计算前导零,它与网络大小成对数关系,完成后通常应该适合更小的整数。