Kademlia节点id的实现

Implementation of Kademlia node id

我正在尝试使用 Kademlia paper 来实现 DHT,以更好地理解这些系统的工作原理。

我已经阅读了一些其他文章,这些文章提到了这种实现分布式哈希的方式 table 但有些事情我无法理解。 在 p2p 交换文件网络中,密钥 ID 可以实现为文件名的摘要,以通过搜索机制保持一致性。

但是节点 ID 本身呢?

例如,我应该采用 "WAN-IP:PORT" 组合的摘要还是从头开始生成一个完全随机的 ID?

在第二种情况下,总是存在两个节点生成相同id的风险。但是使用我的 WAN-IP:PORT 我依赖于这样一个事实,即我的客户端是 运行 WAN-IP 后面的一个节点,它永远不会改变。

它应该如何来自网络本身?我的意思是,在第一次接触时,对等方施展魔法并为新节点提供一个 ID ?

对于如何实现 Kademlia 节点 ID 生成的一些意见,我将不胜感激。

如 Kademlia 论文所述,"Node IDs are currently just random 160-bit identifiers, though they could equally be constructed as in Chords"。

Chords 使用节点 IP 的 SHA-1 摘要。