diff --git a/src/lib.rs b/src/lib.rs index f7afa462d..1511ea7b1 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,27 +6,11 @@ #[cfg(test)] #[macro_use] extern crate quickcheck; extern crate derive_more; - mod tree; +mod node_data; pub use tree::Tree; - -/// Node metadata. -#[repr(C)] -#[derive(Debug)] -pub struct NodeData { - subtree_commitment: [u8; 32], - start_time: u32, - end_time: u32, - start_target: u32, - end_target: u32, - start_sapling_root: [u8; 32], - end_sapling_root: [u8; 32], - subtree_total_work: u64, - start_height: u32, - end_height: u32, - shielded_tx: u64, -} +pub use node_data::NodeData; #[derive(Debug, derive_more::Display)] pub enum Error { diff --git a/src/node_data.rs b/src/node_data.rs new file mode 100644 index 000000000..8d81c71b3 --- /dev/null +++ b/src/node_data.rs @@ -0,0 +1,37 @@ +/// Node metadata. +#[repr(C)] +#[derive(Debug)] +pub struct NodeData { + pub subtree_commitment: [u8; 32], + pub start_time: u32, + pub end_time: u32, + pub start_target: u32, + pub end_target: u32, + pub start_sapling_root: [u8; 32], + pub end_sapling_root: [u8; 32], + pub subtree_total_work: u64, + pub start_height: u32, + pub end_height: u32, + pub shielded_tx: u64, +} + +impl NodeData { + pub fn combine(left: &NodeData, right: &NodeData) -> NodeData { + NodeData { + // TODO: hash children + subtree_commitment: [0u8; 32], + start_time: left.start_time, + end_time: right.end_time, + start_target: left.start_target, + end_target: right.end_target, + start_sapling_root: left.start_sapling_root, + end_sapling_root: right.end_sapling_root, + + // TODO: sum work? + subtree_total_work: 0, + start_height: left.start_height, + end_height: right.end_height, + shielded_tx: left.shielded_tx + right.shielded_tx, + } + } +} \ No newline at end of file diff --git a/src/tree.rs b/src/tree.rs index 2faebb60e..c5fc08f84 100644 --- a/src/tree.rs +++ b/src/tree.rs @@ -272,29 +272,10 @@ impl<'a> IndexedNode<'a> { } -fn combine_data(left: &NodeData, right: &NodeData) -> NodeData { - NodeData { - // TODO: hash children - subtree_commitment: [0u8; 32], - start_time: left.start_time, - end_time: right.end_time, - start_target: left.start_target, - end_target: right.end_target, - start_sapling_root: left.start_sapling_root, - end_sapling_root: right.end_sapling_root, - - // TODO: sum work? - subtree_total_work: 0, - start_height: left.start_height, - end_height: right.end_height, - shielded_tx: left.shielded_tx + right.shielded_tx, - } -} - fn combine_nodes<'a>(left: IndexedNode<'a>, right: IndexedNode<'a>) -> Entry { Entry { kind: EntryKind::Node(left.link, right.link), - data: combine_data(&left.node.data, &right.node.data), + data: NodeData::combine(&left.node.data, &right.node.data), } }