所以我们可以确定 XOR 距离度量是一个真正的度量(它是对称的,满足三角不等式等)
在阅读 Kademlia 及其 k-buckets 之前,我在想,每个节点都会简单地找到自己的 id 并存储其最近的 k 个邻居,反之亦然。节点会定期 ping 它们的邻居,如果它们没有响应,则将它们从列表中逐出。
现在,如果我想找到某个关键 X,我只需将此请求发送到我的邻居中与 X 最接近的节点,并且这会递归地继续,直到您获得一个在其自身及其所有邻居中最接近 X 的节点。该节点将在那些存储 X 值的节点中,然后他们将反转步骤(即展开堆栈)以将值返回给请求者。
节点在加入网络时只需查找自己的 id,然后添加每个 ots 邻居。
似乎比 Kademlia 简单得多。这行得通吗?它只是因为每次查找可能有更多的跃点而慢得多吗?