Go implementation of a Kademlia distributed hash table
Switch branches/tags
Nothing to show
Clone or download
Latest commit 1c80005 Sep 5, 2016



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


  • 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