mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
Introduce HashedPostStateProvider (#12607)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
This commit is contained in:
@ -3,9 +3,9 @@ use crate::{
|
||||
to_range,
|
||||
traits::{BlockSource, ReceiptProvider},
|
||||
BlockHashReader, BlockNumReader, BlockReader, ChainSpecProvider, DatabaseProviderFactory,
|
||||
EvmEnvProvider, HeaderProvider, HeaderSyncGap, HeaderSyncGapProvider, ProviderError,
|
||||
PruneCheckpointReader, StageCheckpointReader, StateProviderBox, StaticFileProviderFactory,
|
||||
TransactionVariant, TransactionsProvider, WithdrawalsProvider,
|
||||
EvmEnvProvider, HashedPostStateProvider, HeaderProvider, HeaderSyncGap, HeaderSyncGapProvider,
|
||||
ProviderError, PruneCheckpointReader, StageCheckpointReader, StateProviderBox,
|
||||
StaticFileProviderFactory, TransactionVariant, TransactionsProvider, WithdrawalsProvider,
|
||||
};
|
||||
use alloy_eips::{
|
||||
eip4895::{Withdrawal, Withdrawals},
|
||||
@ -25,9 +25,16 @@ use reth_primitives::{
|
||||
};
|
||||
use reth_prune_types::{PruneCheckpoint, PruneModes, PruneSegment};
|
||||
use reth_stages_types::{StageCheckpoint, StageId};
|
||||
use reth_storage_api::{NodePrimitivesProvider, TryIntoHistoricalStateProvider};
|
||||
use reth_storage_api::{
|
||||
NodePrimitivesProvider, StateCommitmentProvider, TryIntoHistoricalStateProvider,
|
||||
};
|
||||
use reth_storage_errors::provider::ProviderResult;
|
||||
use revm::primitives::{BlockEnv, CfgEnvWithHandlerCfg};
|
||||
use reth_trie::HashedPostState;
|
||||
use reth_trie_db::StateCommitment;
|
||||
use revm::{
|
||||
db::BundleState,
|
||||
primitives::{BlockEnv, CfgEnvWithHandlerCfg},
|
||||
};
|
||||
use std::{
|
||||
ops::{RangeBounds, RangeInclusive},
|
||||
path::Path,
|
||||
@ -219,6 +226,10 @@ impl<N: ProviderNodeTypes> DatabaseProviderFactory for ProviderFactory<N> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<N: NodeTypesWithDB> StateCommitmentProvider for ProviderFactory<N> {
|
||||
type StateCommitment = N::StateCommitment;
|
||||
}
|
||||
|
||||
impl<N: NodeTypesWithDB> StaticFileProviderFactory for ProviderFactory<N> {
|
||||
/// Returns static file provider
|
||||
fn static_file_provider(&self) -> StaticFileProvider<Self::Primitives> {
|
||||
@ -651,6 +662,14 @@ impl<N: ProviderNodeTypes> PruneCheckpointReader for ProviderFactory<N> {
|
||||
}
|
||||
}
|
||||
|
||||
impl<N: ProviderNodeTypes> HashedPostStateProvider for ProviderFactory<N> {
|
||||
fn hashed_post_state(&self, bundle_state: &BundleState) -> HashedPostState {
|
||||
HashedPostState::from_bundle_state::<<N::StateCommitment as StateCommitment>::KeyHasher>(
|
||||
bundle_state.state(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl<N: NodeTypesWithDB> Clone for ProviderFactory<N> {
|
||||
fn clone(&self) -> Self {
|
||||
Self {
|
||||
|
||||
Reference in New Issue
Block a user