-
-
Notifications
You must be signed in to change notification settings - Fork 187
Home
OpenDHT is a C++17 Kademlia distributed hash table implementation.
OpenDHT is a distributed key-value volatile data store with the following features:
- Ability to store arbitrary values of size up to 64 KiB on the distributed network.
- A dictionary-like API to store (put) and retrieve (get) value from the network.
- A listen operation, to observe change of values at a provided key. This avoids the need to poll the network for changes.
- A value ID distinguishes different values stored under the same key.
- A value type, attached to every value, allows different expiration, creation or editing policies to be applied to different values. For instance, a value type may specify that values are expired after 5 minutes, or that they can only be accepted or edited if they are signed. Note that all nodes need to know about a given value type for the policy to be applied consistently, so the set of supported types is part of the protocol. Nodes treat unknown value types with the default policy.
An optional public-key cryptography layer can be used on top of the DHT. This layer allows to store signed data on the DHT. Signed values can then only be edited by their owner. Signed values retrieved from the DHT are automatically verified and are only presented to the user if the signature verification succeeds.
The identity layer also allow publishing a certificate on the DHT, which can be used for public key discovery, and to encrypt values for other nodes. Encrypted values are always signed, and the signature is part of the encrypted data, which means that only the recipient can know who signed a value. For this reason, like standard non-signed values, encrypted values can't be edited.