github.com/tendermint/iavl (go): Package iavl implements a versioned, snapshottable (immutable) AVL+ tree for persisting key-value pairs.  The tree is not safe for concurrent use, and must be guarded by a Mutex or RWLock as appropriate - the exception is immutable trees returned by MutableTree.GetImmutable() which are safe for concurrent use as long as the version is not deleted via DeleteVersion().  Basic usage of MutableTree:  Proof of existence:  Proof of absence:  Now we delete an old version:  Can't create a proof of absence for a version we no longer have:
Keywords: blockchain|cryptography|merkle-tree