Skip to content
This repository has been archived by the owner on Jul 2, 2021. It is now read-only.

Latest commit

 

History

History
28 lines (24 loc) · 1.92 KB

README.md

File metadata and controls

28 lines (24 loc) · 1.92 KB

kademlia

GoDoc Go Report Card Build Status MIT licensed

This is a Go implementation of a vanilla Kademlia DHT. The implementation is based off of a combination of the original Kademlia whitepaper and the xlattice design specification. It does not attempt to conform to BEP-5, or any other BitTorrent-specific design.

This project has not been heavily battle-tested, and I would not recommend using it in any production environment at this time.

Implementation characteristics

  • uses uTP for all network communication
  • supports IPv4/IPv6
  • uses a well-defined Store interface for extensibility
  • supports STUN for public address discovery

TODO

  • Implement STUN for public address discovery
  • Load testing/Benchmarks
  • More testing around message validation
  • More testing of bad/malicious message handling
  • Banning/throttling of malicious messages/nodes
  • Implement UDP hole punching for NAT traversal
  • Use loose parallelism for iterative lookups
  • Consider breaking store into two messages and transfer bulk of data over TCP
  • Implement republishing according to the xlattice design document
  • Better cleanup of unanswered expected messages
  • Logging support