pub struct StorageRoot<T, H> {
pub trie_cursor_factory: T,
pub hashed_cursor_factory: H,
pub hashed_address: B256,
pub prefix_set: PrefixSet,
/* private fields */
}Expand description
StorageRoot is used to compute the root node of an account storage trie.
Fields§
§trie_cursor_factory: TA reference to the database transaction.
hashed_cursor_factory: HThe factory for hashed cursors.
hashed_address: B256The hashed address of an account.
prefix_set: PrefixSetThe set of storage slot prefixes that have changed.
Implementations§
Source§impl<T, H> StorageRoot<T, H>
impl<T, H> StorageRoot<T, H>
Sourcepub fn new(
trie_cursor_factory: T,
hashed_cursor_factory: H,
address: Address,
prefix_set: PrefixSet,
metrics: TrieRootMetrics,
) -> Self
pub fn new( trie_cursor_factory: T, hashed_cursor_factory: H, address: Address, prefix_set: PrefixSet, metrics: TrieRootMetrics, ) -> Self
Creates a new storage root calculator given a raw address.
Sourcepub const fn new_hashed(
trie_cursor_factory: T,
hashed_cursor_factory: H,
hashed_address: B256,
prefix_set: PrefixSet,
metrics: TrieRootMetrics,
) -> Self
pub const fn new_hashed( trie_cursor_factory: T, hashed_cursor_factory: H, hashed_address: B256, prefix_set: PrefixSet, metrics: TrieRootMetrics, ) -> Self
Creates a new storage root calculator given a hashed address.
Sourcepub fn with_prefix_set(self, prefix_set: PrefixSet) -> Self
pub fn with_prefix_set(self, prefix_set: PrefixSet) -> Self
Set the changed prefixes.
Sourcepub const fn with_walk_all_changed_branch_children(self, enabled: bool) -> Self
pub const fn with_walk_all_changed_branch_children(self, enabled: bool) -> Self
Configures the storage root walker to visit all children of changed branch paths.
When updates are retained, also removes stored descendants hidden by a changed branch’s tree mask. Regenerated branch updates take precedence over these deletions.
Sourcepub const fn with_threshold(self, threshold: u64) -> Self
pub const fn with_threshold(self, threshold: u64) -> Self
Set the threshold.
Sourcepub const fn with_no_threshold(self) -> Self
pub const fn with_no_threshold(self) -> Self
Set the threshold to maximum value so that intermediate progress is not returned.
Sourcepub fn with_intermediate_state(
self,
state: Option<IntermediateRootState>,
) -> Self
pub fn with_intermediate_state( self, state: Option<IntermediateRootState>, ) -> Self
Set the previously recorded intermediate state.
Sourcepub fn with_hashed_cursor_factory<HF>(
self,
hashed_cursor_factory: HF,
) -> StorageRoot<T, HF>
pub fn with_hashed_cursor_factory<HF>( self, hashed_cursor_factory: HF, ) -> StorageRoot<T, HF>
Set the hashed cursor factory.
Sourcepub fn with_trie_cursor_factory<TF>(
self,
trie_cursor_factory: TF,
) -> StorageRoot<TF, H>
pub fn with_trie_cursor_factory<TF>( self, trie_cursor_factory: TF, ) -> StorageRoot<TF, H>
Set the trie cursor factory.
Source§impl<T, H> StorageRoot<T, H>where
T: TrieCursorFactory,
H: HashedCursorFactory,
impl<T, H> StorageRoot<T, H>where
T: TrieCursorFactory,
H: HashedCursorFactory,
Sourcepub fn root_with_progress(self) -> Result<StorageRootProgress, StorageRootError>
pub fn root_with_progress(self) -> Result<StorageRootProgress, StorageRootError>
Walks the intermediate nodes of existing storage trie (if any) and hashed entries. Feeds the nodes into the hash builder. Collects the updates in the process.
§Returns
The intermediate progress of state root computation.
Sourcepub fn root_with_updates(
self,
) -> Result<(B256, usize, StorageTrieUpdates), StorageRootError>
pub fn root_with_updates( self, ) -> Result<(B256, usize, StorageTrieUpdates), StorageRootError>
Walks the hashed storage table entries for a given address and calculates the storage root.
§Returns
The storage root and storage trie updates for a given address.
Sourcepub fn root(self) -> Result<B256, StorageRootError>
pub fn root(self) -> Result<B256, StorageRootError>
Walks the hashed storage table entries for a given address and calculates the storage root.
§Returns
The storage root.
Sourcepub fn calculate(
self,
retain_updates: bool,
) -> Result<StorageRootProgress, StorageRootError>
pub fn calculate( self, retain_updates: bool, ) -> Result<StorageRootProgress, StorageRootError>
Walks the hashed storage table entries for a given address and calculates the storage root.
§Returns
The storage root, number of walked entries and trie updates for a given address if requested.
Sourcepub fn calculate_with_cursor(
self,
hashed_storage_cursor: &mut H::StorageCursor<'_>,
retain_updates: bool,
) -> Result<StorageRootProgress, StorageRootError>
pub fn calculate_with_cursor( self, hashed_storage_cursor: &mut H::StorageCursor<'_>, retain_updates: bool, ) -> Result<StorageRootProgress, StorageRootError>
Walks the hashed storage table entries for a given address and calculates the storage root using a pre-created cursor. The cursor will be repositioned to the given hashed address.
This method allows reusing a single cursor across multiple storage root calculations, reducing overhead when computing storage roots for many accounts.
Trait Implementations§
Auto Trait Implementations§
impl<T, H> !RefUnwindSafe for StorageRoot<T, H>
impl<T, H> !UnwindSafe for StorageRoot<T, H>
impl<T, H> Freeze for StorageRoot<T, H>
impl<T, H> Send for StorageRoot<T, H>
impl<T, H> Sync for StorageRoot<T, H>
impl<T, H> Unpin for StorageRoot<T, H>
impl<T, H> UnsafeUnpin for StorageRoot<T, H>where
T: UnsafeUnpin,
H: UnsafeUnpin,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreimpl<T> MaybeDebug for Twhere
T: Debug,
§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
Source§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.