perlin-network / noise

A decentralized P2P networking stack written in Go.
https://godoc.org/github.com/perlin-network/noise
MIT License
1.78k stars 213 forks source link

R5N DHT #268

Closed dvn0 closed 4 years ago

dvn0 commented 4 years ago

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!

iwasaki-kenta commented 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!

iwasaki-kenta commented 4 years ago

Closing this for now, however, let me know if you would like to further discuss incorporating in R5N as a DHT for Noise :smile:.