mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-11 18:04:18 +00:00
Rename CachedTreeHash trait, add readme
This commit is contained in:
@@ -19,7 +19,7 @@ pub struct CachedTreeHasher {
|
||||
impl CachedTreeHasher {
|
||||
pub fn new<T>(item: &T) -> Result<Self, Error>
|
||||
where
|
||||
T: CachedTreeHashSubTree<T>,
|
||||
T: CachedTreeHash<T>,
|
||||
{
|
||||
Ok(Self {
|
||||
cache: TreeHashCache::new(item, 0)?,
|
||||
@@ -28,7 +28,7 @@ impl CachedTreeHasher {
|
||||
|
||||
pub fn update<T>(&mut self, item: &T) -> Result<(), Error>
|
||||
where
|
||||
T: CachedTreeHashSubTree<T>,
|
||||
T: CachedTreeHash<T>,
|
||||
{
|
||||
// Reset the per-hash counters.
|
||||
self.cache.chunk_index = 0;
|
||||
@@ -66,15 +66,7 @@ pub enum Error {
|
||||
NotLeafNode(usize),
|
||||
}
|
||||
|
||||
pub trait CachedTreeHash<T>: CachedTreeHashSubTree<T> + Sized {
|
||||
fn update_internal_tree_hash_cache(self, old: T) -> Result<(Self, Self), Error>;
|
||||
|
||||
fn cached_tree_hash_root(&self) -> Option<Vec<u8>>;
|
||||
|
||||
fn clone_without_tree_hash_cache(&self) -> Self;
|
||||
}
|
||||
|
||||
pub trait CachedTreeHashSubTree<Item>: TreeHash {
|
||||
pub trait CachedTreeHash<Item>: TreeHash {
|
||||
fn tree_hash_cache_overlay(
|
||||
&self,
|
||||
chunk_offset: usize,
|
||||
|
||||
@@ -11,7 +11,7 @@ pub struct BTreeOverlay {
|
||||
impl BTreeOverlay {
|
||||
pub fn new<T>(item: &T, initial_offset: usize, depth: usize) -> Result<Self, Error>
|
||||
where
|
||||
T: CachedTreeHashSubTree<T>,
|
||||
T: CachedTreeHash<T>,
|
||||
{
|
||||
item.tree_hash_cache_overlay(initial_offset, depth)
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ use super::*;
|
||||
|
||||
mod vec;
|
||||
|
||||
impl CachedTreeHashSubTree<u64> for u64 {
|
||||
impl CachedTreeHash<u64> for u64 {
|
||||
fn new_tree_hash_cache(&self, _depth: usize) -> Result<TreeHashCache, Error> {
|
||||
Ok(TreeHashCache::from_bytes(
|
||||
merkleize(self.to_le_bytes().to_vec()),
|
||||
@@ -35,7 +35,7 @@ impl CachedTreeHashSubTree<u64> for u64 {
|
||||
}
|
||||
}
|
||||
|
||||
impl CachedTreeHashSubTree<usize> for usize {
|
||||
impl CachedTreeHash<usize> for usize {
|
||||
fn new_tree_hash_cache(&self, _depth: usize) -> Result<TreeHashCache, Error> {
|
||||
Ok(TreeHashCache::from_bytes(
|
||||
merkleize(self.to_le_bytes().to_vec()),
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
use super::*;
|
||||
|
||||
impl<T> CachedTreeHashSubTree<Vec<T>> for Vec<T>
|
||||
impl<T> CachedTreeHash<Vec<T>> for Vec<T>
|
||||
where
|
||||
T: CachedTreeHashSubTree<T> + TreeHash,
|
||||
T: CachedTreeHash<T> + TreeHash,
|
||||
{
|
||||
fn new_tree_hash_cache(&self, depth: usize) -> Result<TreeHashCache, Error> {
|
||||
let mut overlay = self.tree_hash_cache_overlay(0, depth)?;
|
||||
@@ -186,7 +186,7 @@ where
|
||||
|
||||
fn get_packed_leaves<T>(vec: &Vec<T>) -> Result<Vec<u8>, Error>
|
||||
where
|
||||
T: CachedTreeHashSubTree<T>,
|
||||
T: CachedTreeHash<T>,
|
||||
{
|
||||
let num_packed_bytes = (BYTES_PER_CHUNK / T::tree_hash_packing_factor()) * vec.len();
|
||||
let num_leaves = num_sanitized_leaves(num_packed_bytes);
|
||||
|
||||
@@ -19,7 +19,7 @@ impl Into<Vec<u8>> for TreeHashCache {
|
||||
impl TreeHashCache {
|
||||
pub fn new<T>(item: &T, depth: usize) -> Result<Self, Error>
|
||||
where
|
||||
T: CachedTreeHashSubTree<T>,
|
||||
T: CachedTreeHash<T>,
|
||||
{
|
||||
item.new_tree_hash_cache(depth)
|
||||
}
|
||||
@@ -30,7 +30,7 @@ impl TreeHashCache {
|
||||
depth: usize,
|
||||
) -> Result<Self, Error>
|
||||
where
|
||||
T: CachedTreeHashSubTree<T>,
|
||||
T: CachedTreeHash<T>,
|
||||
{
|
||||
let overlay = BTreeOverlay::new(item, 0, depth)?;
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ pub const BYTES_PER_CHUNK: usize = 32;
|
||||
pub const HASHSIZE: usize = 32;
|
||||
pub const MERKLE_HASH_CHUNCK: usize = 2 * BYTES_PER_CHUNK;
|
||||
|
||||
pub use cached_tree_hash::{BTreeOverlay, CachedTreeHashSubTree, Error, TreeHashCache};
|
||||
pub use cached_tree_hash::{BTreeOverlay, CachedTreeHash, Error, TreeHashCache};
|
||||
pub use signed_root::SignedRoot;
|
||||
pub use standard_tree_hash::{merkle_root, TreeHash};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user