incrementalmerkletree/bridgetree
Kris Nuttycombe 4efe39eaa6 Remove initial checkpoints.
The choice to use an initial checkpoint as an anchor for removals in
`unmark` operations produced an awkward situation where it was necessary
to choose a checkpoint identifier just to construct an empty tree. This
removes that decision in favor of eagerly removing data if there is no
checkpoint to tie the removal to.
2023-05-22 12:11:34 -06:00
..
proptest-regressions Modify test infrastructure to allow shardtree testing. 2023-02-16 15:01:53 -07:00
src Remove initial checkpoints. 2023-05-22 12:11:34 -06:00
CHANGELOG.md Move frontier types from `bridgetree` to `incrementalmerkletree` 2023-03-21 12:15:22 -06:00
COPYING.md Move the `bridgetree` crate to a workspace. 2022-12-21 11:59:43 -07:00
Cargo.toml Remove `serde` serialization & deserialization 2023-03-21 12:15:22 -06:00
LICENSE-APACHE Move the `bridgetree` crate to a workspace. 2022-12-21 11:59:43 -07:00
LICENSE-MIT Move the `bridgetree` crate to a workspace. 2022-12-21 11:59:43 -07:00
README.md Move the `bridgetree` crate to a workspace. 2022-12-21 11:59:43 -07:00

README.md

bridgetree

This is a Rust crate that provides an implementation of an append-only Merkle tree structure. Individual leaves of the merkle tree may be marked such that witnesses will be maintained for the marked leaves as additional nodes are appended to the tree, but leaf and node data not specifically required to maintain these witnesses is not retained, for space efficiency. The data structure also supports checkpointing of the tree state such that the tree may be reset to a previously checkpointed state, up to a fixed number of checkpoints.

The crate also supports using "bridges" containing the minimal possible amount of data to advance witnesses for marked leaves data up to recent checkpoints or the the latest state of the tree without having to append each intermediate leaf individually, given a bridge between the desired states computed by an outside source. The state of the tree is internally represented as a set of such bridges, and the data structure supports fusing and splitting of bridges.

Documentation

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.