The point and purpose of the Verifiable Log Backed Map is to provide a mapping from identiers, such as phone numbers, email addresses, etc, to public keys, which mapping has to be the same for everyone – so that if you see your public key is such and such, you know that those you converse with also see your public key is such and such.
For this to be actually useful, needs to drive a blogging and messaging system with capabilities analogous to facebook, wordpress, or twitter, and each entity in the system needs to have a wallet analogous to a blockchain wallet. Not all wallets should be associated with entities that can be easily found on the network, but entities that can be easily found on the network should have wallets
A Verifiable Log Backed map is a Verifiable Map backed by a Verifiable Log that describes an ordered set of operations that result in predictable mutations to the map.
The verifiable log as described is equivalent to that described in RFC6962.
A verifiable map is a map from a set of keys to a corresponding set of values. Conceptually we map all 2256 hash values to 256 bit values plus null, except that we take advantage of the fact that the tree is sparse, that most values map to null. Periodically the map will publish a signed tree head which includes a root hash of all 2256 entries.
We implement this as a Merkle-patricia dac.
Clients of the map can:
This verifiable map as described is equivalent to the Sparse Merkle Tree described in Revocation Transparency.
is a Verifiable Map backed by a Verifiable Log that describes an ordered set of operations that result in predictable mutations to the map.
The following table summarizes properties of the data structures laid out above. “Efficiently” means that a client can and should perform this validation themselves. “Full audit” means that to validate correctly, a client would need to download the entire dataset, and is something that in practices we expect a small number of dedicated auditors to perform, rather than being done by each client.
Verifiable Log | Verifiable Map | Verifiable LogBacked Map | |
---|---|---|---|
Prove inclusion of value | Yes, efficiently | Yes, efficiently | Yes, efficiently |
Prove noninclusion of value | Impractical | Yes, efficiently | Yes, efficiently |
Retrieve provable value for key | Impractical | Yes, efficiently | Yes, efficiently |
Retrieve provable current value for key | Impractical | No | Yes, efficiently |
Prove appendonly | Yes, efficiently | No | Yes, efficiently, although full audit is required to verify complete correct operation. |
Enumerate all entries | Yes, by full audit | Yes, by full audit | Yes, by full audit |
Prove correct operation | Yes, efficiently | No | Yes, by full audit |
Enable detection of splitview | Yes, efficiently | Yes, efficiently | Yes, efficiently |