Closed dvn0 closed 4 years ago
Very interesting! I have personally not heard of the R5N DHT and skimmed through a few of its details just now in the links you shared.
One primary distinction from the original Kademlia specification is that in the case of lookups/searching for peers closest to some given ID, Noise implements the parallel disjoint lookup method from the S/Kademlia paper to prevent routing attacks (modifications to FIND_NODE RPC).
One other aspect of S/Kademlia, which is a proof-of-work puzzle for making peer ID generation CPU-intensive and random, still has yet to be implemented in Noise.
In terms of adopting the R5N DHT, Noise unfortunately at the moment does not implement a full DHT but rather uses the Kademlia routing table for peer discovery/routing only. The implementation of a DHT would be out-of-scope in this case.
However, if there might be more tidbits of R5N that definitely should be considered worth adopting into Noise though, do let me know!
Closing this for now, however, let me know if you would like to further discuss incorporating in R5N as a DHT for Noise :smile:.
Firstly, interesting project. I'm happy to see another project in this idea-space. I've been a p2p researcher for several years now, and am a part of the GNUnet project, as well as p2pcollab.
I'm curious as to whether the R5N DHT which is implemented in GNUnet is known to any of the developers/architects of Noise. It contains some properties which allow it to outperform Kademlia in a restricted network, as well as being resistant to some of Kademlia's vulnerabilities such as poisoning and Sybil attacks.
Here are a couple of resources for reading more:
R5N Overview - PDF Slides
R5N Paper - PDF
Would love to hear what people involved with Noice/Perlin think, and would be happy to discuss further!