A Key/Value store where the keys are derived by using a hash function of the values. Values are arbitrary binary blobs.
The rleationship between keys and values may be immutable or mutable.
For a given hash function, the same value will always generate the same key. Immutable keys can be used to provide content addressing of data blocks.
Immutable k/v pairs may be used to build a merkel DAG.
For a given hash function, the k/v key is generated by hashing the public key of a unique public/private key pair, the value to be associated with the public key is signed using the private key from the same key pair.
This allows a single key to reference different values, anyone looking up the key can validate that only the owner of the associated public/private key pair could have generated the key.
Mutable keys can be used as the basis a distributed naming service, clients lookup the hash of the public key and can validate the associated value was signed by owner associated with the public/private key pair.
A HashedValueStore can be used as a core component when developing distributed systems that have no central authority or coordination and where peers need to be able to independently validate incoming data.
This repo contains interface definitions for the HashedValueStore in the following languages.
Java