Skip to main content

StorageRoot

Struct StorageRoot 

Source
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: T

A reference to the database transaction.

§hashed_cursor_factory: H

The factory for hashed cursors.

§hashed_address: B256

The hashed address of an account.

§prefix_set: PrefixSet

The set of storage slot prefixes that have changed.

Implementations§

Source§

impl<T, H> StorageRoot<T, H>

Source

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.

Source

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.

Source

pub fn with_prefix_set(self, prefix_set: PrefixSet) -> Self

Set the changed prefixes.

Source

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.

Source

pub const fn with_threshold(self, threshold: u64) -> Self

Set the threshold.

Source

pub const fn with_no_threshold(self) -> Self

Set the threshold to maximum value so that intermediate progress is not returned.

Source

pub fn with_intermediate_state( self, state: Option<IntermediateRootState>, ) -> Self

Set the previously recorded intermediate state.

Source

pub fn with_hashed_cursor_factory<HF>( self, hashed_cursor_factory: HF, ) -> StorageRoot<T, HF>

Set the hashed cursor factory.

Source

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>

Source

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.

Source

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.

Source

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.

Source

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.

Source

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§

Source§

impl<T: Debug, H: Debug> Debug for StorageRoot<T, H>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

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>
where T: Freeze, H: Freeze,

§

impl<T, H> Send for StorageRoot<T, H>
where T: Send, H: Send,

§

impl<T, H> Sync for StorageRoot<T, H>
where T: Sync, H: Sync,

§

impl<T, H> Unpin for StorageRoot<T, H>
where T: Unpin, H: Unpin,

§

impl<T, H> UnsafeUnpin for StorageRoot<T, H>
where T: UnsafeUnpin, H: UnsafeUnpin,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts 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 more
§

impl<T> MaybeDebug for T
where T: Debug,

§

impl<T> NonStaticAny for T
where T: ?Sized,

§

fn type_id(&self) -> TypeId

Returns the lifetime-erased type ID of self.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more

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.