anchor provider trait

This commit is contained in:
NikVolf 2019-01-08 16:52:02 +03:00
parent 0d98b13e2f
commit f995fda937
2 changed files with 19 additions and 0 deletions

17
storage/src/anchors.rs Normal file
View File

@ -0,0 +1,17 @@
use hash::H256;
use bytes::Bytes;
use {EpochTag, RegularTreeState};
pub trait AnchorProvider {
fn tree_bytes_at(&self, root: &H256) -> Option<Bytes>;
fn tree_at(&self, root: &H256) -> Option<RegularTreeState> {
self.tree_bytes_at(root)
.map(
|bytes| serialization::Reader::new(&bytes[..])
.read::<RegularTreeState>()
.expect("Corrupted database: wrong tree state format!")
)
}
}

View File

@ -25,6 +25,7 @@ mod transaction_meta;
mod transaction_provider;
mod nullifier;
mod tree_state;
mod anchors;
pub use primitives::{hash, bytes};
@ -41,6 +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 anchors::AnchorProvider;
/// Epoch tag.
///