Kademlia 使用 XOR 度量。除其他外,这具有所谓的“单向”属性(= 对于任何给定的点 x 和距离 e>0,恰好有一个点 y 使得 d(x,y)=e)。
第一个问题是一个普遍的问题:度量的这个属性是否对 Kademlia 的功能至关重要,或者它只是有助于揭示来自某些节点的压力(正如原始论文所暗示的那样)。换句话说,如果我们想改变指标,那么同时拥有一个“单向”的指标有多重要?
第二个问题是关于指标的具体变化:假设我们有节点标识符(地址)作为 X 位数字,以下任何指标是否适用于 Kademlia?
d(x,y) = abs(x-y)
d(x,y) = abs(x-y) + 1/(x xor y)
第一个指标只是提供数字之间的差异,因此对于节点 ID 100,ID 为 90 和 110 的节点距离相等,因此这不是单向指标。在第二种情况下,我们修复了添加 1/(x xor y),我们知道 (x xor y) 是单向的,因此具有 1/(x xor y) 应该保留此属性。
因此,对于节点 ID 100,节点 ID 90 为d(100,90) = 10 + 1/62
,而与节点 ID 110 的距离为d(100,110) = 10 + 1/10
。