# Kademlia DHT over HTTP for lists ## TL;DR Simple HTTP server impl that can be used for DHTs that can store multiple values at once, using the techniques described in the infamous [Kademlia paper](https://pdos.csail.mit.edu/~petar/papers/maymounkov-kademlia-lncs.pdf). Such a design may be useful, when wanting ## Limitations * `SHA1` keys => 20 byte keys * Max value size of `2048` bytes * No authentication, etc (just like Kademlia) * Short TTL (currently `10` minutes) ## Spec ### HTTP Routes |Path|Description| |-|-| |GET `/ping`|Check if the node is alive, node should respond with own id in hex and status HTTP `242`| |GET `/get/:key?limit=`|Obtain the entries for the given `key` from node; `limit` may be omitted| |POST `/put/:key`|Add an entry to the given `key`; value base64 encoded in body as `text/plain`| |GET `/find`|Obtain all remote nodes from the node; JSON schema like `[[hex_id0, host0], [hex_id1, host1]]`; May not be implemented| |GET `/find/:key?limit=`|Obtain the remote nodes from the node that are closest to the given `key`, ordered closest-first; `limit` may be omitted; same JSON schema as `/find`| |POST `/notify`|Notify the node about a given host; host as `text/plain` in body; May not be implemented but useful for keeping the network intact|