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:
@ -263,7 +263,8 @@ impl<C: ChainSpecParser<ChainSpec = ChainSpec>> Command<C> {
|
||||
let block_with_senders =
|
||||
SealedBlockWithSenders::<BlockTy<N>>::new(block.clone(), senders).unwrap();
|
||||
|
||||
let db = StateProviderDatabase::new(blockchain_db.latest()?);
|
||||
let state_provider = blockchain_db.latest()?;
|
||||
let db = StateProviderDatabase::new(&state_provider);
|
||||
let executor =
|
||||
EthExecutorProvider::ethereum(provider_factory.chain_spec()).executor(db);
|
||||
|
||||
@ -273,7 +274,7 @@ impl<C: ChainSpecParser<ChainSpec = ChainSpec>> Command<C> {
|
||||
ExecutionOutcome::from((block_execution_output, block.number));
|
||||
debug!(target: "reth::cli", ?execution_outcome, "Executed block");
|
||||
|
||||
let hashed_post_state = execution_outcome.hash_state_slow();
|
||||
let hashed_post_state = state_provider.hashed_post_state(execution_outcome.state());
|
||||
let (state_root, trie_updates) = StateRoot::overlay_root_with_updates(
|
||||
provider_factory.provider()?.tx_ref(),
|
||||
hashed_post_state.clone(),
|
||||
|
||||
@ -24,8 +24,9 @@ use reth_node_ethereum::EthExecutorProvider;
|
||||
use reth_primitives::BlockExt;
|
||||
use reth_provider::{
|
||||
providers::ProviderNodeTypes, AccountExtReader, ChainSpecProvider, DatabaseProviderFactory,
|
||||
HashingWriter, HeaderProvider, LatestStateProviderRef, OriginalValuesKnown, ProviderFactory,
|
||||
StageCheckpointReader, StateWriter, StorageLocation, StorageReader,
|
||||
HashedPostStateProvider, HashingWriter, HeaderProvider, LatestStateProviderRef,
|
||||
OriginalValuesKnown, ProviderFactory, StageCheckpointReader, StateWriter, StorageLocation,
|
||||
StorageReader,
|
||||
};
|
||||
use reth_revm::database::StateProviderDatabase;
|
||||
use reth_stages::StageId;
|
||||
@ -143,7 +144,8 @@ impl<C: ChainSpecParser<ChainSpec = ChainSpec>> Command<C> {
|
||||
)
|
||||
.await?;
|
||||
|
||||
let db = StateProviderDatabase::new(LatestStateProviderRef::new(&provider));
|
||||
let state_provider = LatestStateProviderRef::new(&provider);
|
||||
let db = StateProviderDatabase::new(&state_provider);
|
||||
|
||||
let executor = EthExecutorProvider::ethereum(provider_factory.chain_spec()).executor(db);
|
||||
|
||||
@ -165,7 +167,7 @@ impl<C: ChainSpecParser<ChainSpec = ChainSpec>> Command<C> {
|
||||
// Unpacked `BundleState::state_root_slow` function
|
||||
let (in_memory_state_root, in_memory_updates) = StateRoot::overlay_root_with_updates(
|
||||
provider.tx_ref(),
|
||||
execution_outcome.hash_state_slow(),
|
||||
state_provider.hashed_post_state(execution_outcome.state()),
|
||||
)?;
|
||||
|
||||
if in_memory_state_root == block.state_root {
|
||||
|
||||
Reference in New Issue
Block a user