Skip to content

Commit

Permalink
build: add get_root_hash for filled tree
Browse files Browse the repository at this point in the history
  • Loading branch information
aner-starkware committed Apr 10, 2024
1 parent 94f97e3 commit 6b6dada
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 6 deletions.
1 change: 1 addition & 0 deletions crates/committer/src/hash/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ use crate::types::Felt;
pub(crate) struct HashInputPair(pub Felt, pub Felt);

#[allow(dead_code)]
#[derive(Clone, Copy)]
pub(crate) struct HashOutput(pub Felt);

#[allow(dead_code)]
Expand Down
5 changes: 3 additions & 2 deletions crates/committer/src/patricia_merkle_tree/errors.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ pub(crate) enum CurrentSkeletonTreeError {}
#[derive(Debug)]
pub(crate) enum UpdatedSkeletonTreeError {}

#[derive(Debug)]
pub(crate) enum FilledTreeError {}
pub(crate) enum FilledTreeError {
MissingRoot,
}
2 changes: 1 addition & 1 deletion crates/committer/src/patricia_merkle_tree/filled_node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ pub(crate) struct Nonce(pub Felt);
#[allow(dead_code)]
/// A node in a Patricia-Merkle tree which was modified during an update.
pub(crate) struct FilledNode<L: LeafDataTrait> {
hash: HashOutput,
pub(crate) hash: HashOutput,
data: NodeData<L>,
}

Expand Down
11 changes: 9 additions & 2 deletions crates/committer/src/patricia_merkle_tree/filled_tree.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ use std::collections::HashMap;
use std::collections::HashSet;
use std::sync::Mutex;

use crate::hash::types::HashOutput;
use crate::patricia_merkle_tree::errors::FilledTreeError;
use crate::patricia_merkle_tree::filled_node::FilledNode;
use crate::patricia_merkle_tree::types::LeafDataTrait;
use crate::patricia_merkle_tree::types::NodeIndex;
use crate::patricia_merkle_tree::types::{LeafDataTrait, NodeIndex};
use crate::storage::storage_trait::Storage;

/// Consider a Patricia-Merkle Tree which has been updated with new leaves.
Expand All @@ -29,4 +29,11 @@ impl<L: LeafDataTrait> FilledTreeImpl<L> {
fn get_all_nodes(&self) -> &HashMap<NodeIndex, Mutex<FilledNode<L>>> {
&self.tree_map
}

fn get_root_hash(&self) -> Result<HashOutput, FilledTreeError> {
match self.tree_map.get(&NodeIndex::root_index()) {
Some(root_node) => Ok(root_node.lock().expect("Lock poisned.").hash),
None => Err(FilledTreeError::MissingRoot),
}
}
}
2 changes: 1 addition & 1 deletion crates/committer/src/patricia_merkle_tree/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ pub(crate) trait TreeHashFunction<L: LeafDataTrait, H: HashFunction> {
}

#[allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub(crate) struct NodeIndex(pub Felt);

#[allow(dead_code)]
Expand Down

0 comments on commit 6b6dada

Please sign in to comment.