Trait reth_provider::HashingWriter

source ·
pub trait HashingWriter: Send + Sync {
    // Required methods
    fn unwind_account_hashing(
        &self,
        range: RangeInclusive<BlockNumber>,
    ) -> ProviderResult<BTreeMap<B256, Option<Account>>>;
    fn insert_account_for_hashing(
        &self,
        accounts: impl IntoIterator<Item = (Address, Option<Account>)>,
    ) -> ProviderResult<BTreeMap<B256, Option<Account>>>;
    fn unwind_storage_hashing(
        &self,
        range: Range<BlockNumberAddress>,
    ) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>;
    fn insert_storage_for_hashing(
        &self,
        storages: impl IntoIterator<Item = (Address, impl IntoIterator<Item = StorageEntry>)>,
    ) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>;
    fn insert_hashes(
        &self,
        range: RangeInclusive<BlockNumber>,
        end_block_hash: B256,
        expected_state_root: B256,
    ) -> ProviderResult<()>;
}
Expand description

Hashing Writer

Required Methods§

source

fn unwind_account_hashing( &self, range: RangeInclusive<BlockNumber>, ) -> ProviderResult<BTreeMap<B256, Option<Account>>>

Unwind and clear account hashing.

§Returns

Set of hashed keys of updated accounts.

source

fn insert_account_for_hashing( &self, accounts: impl IntoIterator<Item = (Address, Option<Account>)>, ) -> ProviderResult<BTreeMap<B256, Option<Account>>>

Inserts all accounts into [reth_db::tables::AccountsHistory] table.

§Returns

Set of hashed keys of updated accounts.

source

fn unwind_storage_hashing( &self, range: Range<BlockNumberAddress>, ) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>

Unwind and clear storage hashing

§Returns

Mapping of hashed keys of updated accounts to their respective updated hashed slots.

source

fn insert_storage_for_hashing( &self, storages: impl IntoIterator<Item = (Address, impl IntoIterator<Item = StorageEntry>)>, ) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>

Iterates over storages and inserts them to hashing table.

§Returns

Mapping of hashed keys of updated accounts to their respective updated hashed slots.

source

fn insert_hashes( &self, range: RangeInclusive<BlockNumber>, end_block_hash: B256, expected_state_root: B256, ) -> ProviderResult<()>

Calculate the hashes of all changed accounts and storages, and finally calculate the state root.

The hashes are calculated from fork_block_number + 1 to current_block_number.

The resulting state root is compared with expected_state_root.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<'a, T: 'a + HashingWriter + ?Sized> HashingWriter for &'a T
where &'a T: Send + Sync,

source§

fn unwind_account_hashing( &self, range: RangeInclusive<BlockNumber>, ) -> ProviderResult<BTreeMap<B256, Option<Account>>>

source§

fn insert_account_for_hashing( &self, accounts: impl IntoIterator<Item = (Address, Option<Account>)>, ) -> ProviderResult<BTreeMap<B256, Option<Account>>>

source§

fn unwind_storage_hashing( &self, range: Range<BlockNumberAddress>, ) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>

source§

fn insert_storage_for_hashing( &self, storages: impl IntoIterator<Item = (Address, impl IntoIterator<Item = StorageEntry>)>, ) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>

source§

fn insert_hashes( &self, range: RangeInclusive<BlockNumber>, end_block_hash: B256, expected_state_root: B256, ) -> ProviderResult<()>

source§

impl<T: HashingWriter + ?Sized> HashingWriter for Box<T>
where Box<T>: Send + Sync,

source§

fn unwind_account_hashing( &self, range: RangeInclusive<BlockNumber>, ) -> ProviderResult<BTreeMap<B256, Option<Account>>>

source§

fn insert_account_for_hashing( &self, accounts: impl IntoIterator<Item = (Address, Option<Account>)>, ) -> ProviderResult<BTreeMap<B256, Option<Account>>>

source§

fn unwind_storage_hashing( &self, range: Range<BlockNumberAddress>, ) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>

source§

fn insert_storage_for_hashing( &self, storages: impl IntoIterator<Item = (Address, impl IntoIterator<Item = StorageEntry>)>, ) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>

source§

fn insert_hashes( &self, range: RangeInclusive<BlockNumber>, end_block_hash: B256, expected_state_root: B256, ) -> ProviderResult<()>

source§

impl<T: HashingWriter + ?Sized> HashingWriter for Arc<T>
where Arc<T>: Send + Sync,

source§

fn unwind_account_hashing( &self, range: RangeInclusive<BlockNumber>, ) -> ProviderResult<BTreeMap<B256, Option<Account>>>

source§

fn insert_account_for_hashing( &self, accounts: impl IntoIterator<Item = (Address, Option<Account>)>, ) -> ProviderResult<BTreeMap<B256, Option<Account>>>

source§

fn unwind_storage_hashing( &self, range: Range<BlockNumberAddress>, ) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>

source§

fn insert_storage_for_hashing( &self, storages: impl IntoIterator<Item = (Address, impl IntoIterator<Item = StorageEntry>)>, ) -> ProviderResult<HashMap<B256, BTreeSet<B256>>>

source§

fn insert_hashes( &self, range: RangeInclusive<BlockNumber>, end_block_hash: B256, expected_state_root: B256, ) -> ProviderResult<()>

Implementors§

source§

impl<TX: DbTxMut + DbTx> HashingWriter for DatabaseProvider<TX>