Implements merkle mountain belts (MMBs) - a cryptographic accumulator with O(log(n))
accumulator size and O(log(k))
{accumulator update, membership witness, prefix witness}
cost, where k
is the distance from the latest leaf to the leaf being considered. There exist two forms of MMBs: single- and double-bagged. The single-bagging implementation is considerably simpler to implement, but does not have as attractive performance characteristics as the double-bagging variant.
Currently, the codebase is split as follows:
storage.clj
the persistent storage backend and the associated pointer arithmeticcore.clj
contains the one-shot MMB construction method (both single- and double-bagging variants), as well as MMR construction methodslinked-peaks.clj
contains the incremental append operationvisualization_mmr.clj
contains the visualization of MMRsvisualization_mmb.clj
contains the visualization of MMBs
Feedback and contributions welcome :)