miden_crypto/merkle/
mod.rs1use core::fmt::{self, Display};
3
4use super::{EMPTY_WORD, Felt, Word, ZERO, hash::rpo::Rpo256};
5
6mod empty_roots;
10pub use empty_roots::EmptySubtreeRoots;
11
12mod index;
13pub use index::NodeIndex;
14
15mod merkle_tree;
16pub use merkle_tree::{MerkleTree, path_to_text, tree_to_text};
17
18mod path;
19pub use path::{MerklePath, RootPath, ValuePath};
20
21mod sparse_path;
22pub use sparse_path::{SparseMerklePath, SparseValuePath};
23
24mod smt;
25pub use smt::{
26 InnerNode, LeafIndex, MutationSet, NodeMutation, PartialSmt, SMT_DEPTH, SMT_MAX_DEPTH,
27 SMT_MIN_DEPTH, SimpleSmt, Smt, SmtLeaf, SmtLeafError, SmtProof, SmtProofError,
28};
29#[cfg(feature = "internal")]
30pub use smt::{SubtreeLeaf, build_subtree_for_bench};
31
32mod mmr;
33pub use mmr::{Forest, InOrderIndex, Mmr, MmrDelta, MmrError, MmrPeaks, MmrProof, PartialMmr};
34
35mod store;
36pub use store::{DefaultMerkleStore, MerkleStore, RecordingMerkleStore, StoreNode};
37
38mod node;
39pub use node::InnerNodeInfo;
40
41mod partial_mt;
42pub use partial_mt::PartialMerkleTree;
43
44mod error;
45pub use error::MerkleError;
46
47impl<const DEPTH: u8> Display for LeafIndex<DEPTH> {
48 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
49 write!(f, "DEPTH={}, value={}", DEPTH, self.value())
50 }
51}
52
53#[cfg(test)]
57const fn int_to_node(value: u64) -> Word {
58 Word::new([Felt::new(value), ZERO, ZERO, ZERO])
59}
60
61#[cfg(test)]
62const fn int_to_leaf(value: u64) -> Word {
63 Word::new([Felt::new(value), ZERO, ZERO, ZERO])
64}