A simple (and experimental) implementation of Kademlia core network management functions, such as ping, lookup closest nodes, network join, routing table refresh.
This implementation in contrast to the original specification uses 64-bit wide identifiers (the original Kademlia specifies 160-bit identifiers). 64-bit value space is much more susceptible to collisions than the 160-bit wide one, and cannot be used in large-scale networks. I decided to use 64-bit keys merely as a starting point in an experimental implementation, because operations on 64-bit keys are just easier to implement in C.
I implemented it on top of my other libraries: mkushnir/mrkcommon, mkushnir/mrkthr, mkushnir/mrkdata, mkushnir/mrkrpc.
Data management functions: store value, lookup value, replicate value, value expiration.
At the moment, this implementation is limited to the FreeBSD operating system.