Skip to main content

DatabaseHashedPostState

Trait DatabaseHashedPostState 

Source
pub trait DatabaseHashedPostState: Sized {
    // Required method
    fn from_reverts(
        provider: &(impl ChangeSetReader + StorageChangeSetReader + BlockNumReader + DBProvider),
        range: impl RangeBounds<BlockNumber>,
    ) -> Result<HashedPostStateSorted, ProviderError>;
}
Expand description

Extends [HashedPostStateSorted] with operations specific for working with a database transaction.

Required Methods§

Source

fn from_reverts( provider: &(impl ChangeSetReader + StorageChangeSetReader + BlockNumReader + DBProvider), range: impl RangeBounds<BlockNumber>, ) -> Result<HashedPostStateSorted, ProviderError>

Initializes [HashedPostStateSorted] from reverts. Iterates over state reverts in the specified range and aggregates them into sorted hashed state.

Storage keys from changesets are tagged as Plain or Hashed by the reader, so no use_hashed_state flag is needed. Addresses are always hashed.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl DatabaseHashedPostState for HashedPostStateSorted

Source§

fn from_reverts( provider: &(impl ChangeSetReader + StorageChangeSetReader + BlockNumReader + DBProvider), range: impl RangeBounds<BlockNumber>, ) -> Result<Self, ProviderError>

Builds a sorted hashed post-state from reverts.

Reads MDBX data directly into Vecs, using HashSets only to track seen keys. This avoids intermediate HashMap allocations since MDBX data is already sorted.

  • Reads the first occurrence of each changed account/storage slot in the range.
  • Addresses are always keccak256-hashed.
  • Storage keys are tagged by the changeset reader and hashed via StorageSlotKey::to_hashed.
  • Returns keys already ordered for trie iteration.

Implementors§