arnaucube
arnaucube/miden-cryptoPublic Self-hosted repository
miden-crypto/src/merkle/mod.rs
src/merkle/mod.rsRaw
 1use super::{
 2    hash::rpo::{Rpo256, RpoDigest},
 3    utils::collections::{vec, BTreeMap, BTreeSet, KvMap, RecordingMap, TryApplyDiff, Vec},
 4    Felt, StarkField, Word, WORD_SIZE, ZERO,
 5};
 6
 7// REEXPORTS
 8// ================================================================================================
 9
10mod empty_roots;
11pub use empty_roots::EmptySubtreeRoots;
12
13mod delta;
14pub use delta::{merkle_tree_delta, MerkleStoreDelta, MerkleTreeDelta};
15
16mod index;
17pub use index::NodeIndex;
18
19mod merkle_tree;
20pub use merkle_tree::{path_to_text, tree_to_text, MerkleTree};
21
22mod path;
23pub use path::{MerklePath, RootPath, ValuePath};
24
25mod simple_smt;
26pub use simple_smt::SimpleSmt;
27
28mod tiered_smt;
29pub use tiered_smt::{TieredSmt, TieredSmtProof, TieredSmtProofError};
30
31mod mmr;
32pub use mmr::{Mmr, MmrPeaks, MmrProof};
33
34mod store;
35pub use store::{DefaultMerkleStore, MerkleStore, RecordingMerkleStore, StoreNode};
36
37mod node;
38pub use node::InnerNodeInfo;
39
40mod partial_mt;
41pub use partial_mt::PartialMerkleTree;
42
43mod error;
44pub use error::MerkleError;
45
46// HELPER FUNCTIONS
47// ================================================================================================
48
49#[cfg(test)]
50const fn int_to_node(value: u64) -> RpoDigest {
51    RpoDigest::new([Felt::new(value), ZERO, ZERO, ZERO])
52}
53
54#[cfg(test)]
55const fn int_to_leaf(value: u64) -> Word {
56    [Felt::new(value), ZERO, ZERO, ZERO]
57}
58
59#[cfg(test)]
60fn digests_to_words(digests: &[RpoDigest]) -> Vec<Word> {
61    digests.iter().map(|d| d.into()).collect()
62}