This is a Go library that implements a Sparse Merkle Trie for a key-value map.
The trie implements the same optimizations specified in the Libra whitepaper,
to reduce the number of hash operations required per trie operation to 
Documentation for the different aspects of this library, the trie, proofs and all its different components can be found in the docs directory:
- Sparse Merkle Trie - Core SMT implementation and usage
- Merkle Sum Trie - SMST implementation with sum capabilities
- Benchmarks - Performance benchmarks and analysis
- MapStore Interface - Key-value store interface documentation
- Badger Store - BadgerDB storage backend implementation
- FAQ - Frequently asked questions
To run all tests (excluding benchmarks) run the following command:
make test_allTo test the badger submodule that provides a more fully featured key-value
store, run the following command:
make test_badgerTo run the full suite of benchmarks simply run the following command:
make benchmark_allTo view pre-ran results of the entire benchmarking suite see benchmarks
You can tag and publish a new release by using one of the following commands:
make release_tag_rc
make release_tag_dev
make release_tag_minor
make release_tag_majorCreate a release on GitHub with the tag and the release notes on GitHub.