3

所以我们可以确定 XOR 距离度量是一个真正的度量(它是对称的,满足三角不等式等)

在阅读 Kademlia 及其 k-buckets 之前,我在想,每个节点都会简单地找到自己的 id 并存储其最近的 k 个邻居,反之亦然。节点会定期 ping 它们的邻居,如果它们没有响应,则将它们从列表中逐出。

现在,如果我想找到某个关键 X,我只需将此请求发送到我的邻居中与 X 最接近的节点,并且这会递归地继续,直到您获得一个在其自身及其所有邻居中最接近 X 的节点。该节点将在那些存储 X 值的节点中,然后他们将反转步骤(即展开堆栈)以将值返回给请求者。

节点在加入网络时只需查找自己的 id,然后添加每个 ots 邻居。

似乎比 Kademlia 简单得多。这行得通吗?它只是因为每次查找可能有更多的跃点而慢得多吗?

4

1 回答 1

2

不。

如果没有 kademlia 的路由表,您将无法保证任何节点的邻居列表实际上会包含更接近目标键的联系人,因此可以帮助您的查询收敛到目标。

这甚至可能发生在第 0 跳,即您的本地路由表可能只包含比您离目标节点更远的邻居。您将没有更好的联系人可以查询。您实际上必须在距离度量上倒退,但异或距离不允许负距离,因为它只是一个模 N 的正整数环,所以负距离环绕到最远的节点,这相当于 kademlia 的桶0 前缀位共享。

于 2018-05-10T12:45:42.510 回答