diff --git a/storage/src/lib.rs b/storage/src/lib.rs index 3c25db95..b21c8d44 100644 --- a/storage/src/lib.rs +++ b/storage/src/lib.rs @@ -25,7 +25,7 @@ mod transaction_meta; mod transaction_provider; mod nullifier; mod tree_state; -mod anchor; +mod tree_state_provider; pub use primitives::{hash, bytes}; @@ -42,7 +42,7 @@ pub use transaction_meta::TransactionMeta; pub use transaction_provider::{TransactionProvider, TransactionOutputProvider, TransactionMetaProvider}; pub use nullifier::{Nullifier, NullifierTracker}; pub use tree_state::{TreeState, H32 as H32TreeDim, Dim as TreeDim, RegularTreeState}; -pub use anchor::AnchorProvider; +pub use tree_state_provider::TreeStateProvider; /// Epoch tag. /// diff --git a/storage/src/anchor.rs b/storage/src/tree_state_provider.rs similarity index 62% rename from storage/src/anchor.rs rename to storage/src/tree_state_provider.rs index c0d69d9c..0e2eaa50 100644 --- a/storage/src/anchor.rs +++ b/storage/src/tree_state_provider.rs @@ -2,7 +2,7 @@ use hash::H256; use bytes::Bytes; use {EpochTag, RegularTreeState}; -pub trait AnchorProvider { +pub trait TreeStateProvider { fn tree_bytes_at(&self, root: &H256) -> Option; fn tree_at(&self, root: &H256) -> Option { @@ -13,4 +13,10 @@ pub trait AnchorProvider { .expect("Corrupted database: wrong tree state format!") ) } + + fn block_root(&self, block_hash: &H256) -> Option; + + fn tree_at_block(&self, block_hash: &H256) -> Option { + self.block_root(block_hash).and_then(|h| self.tree_at(&h)) + } }