mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 19:09:54 +00:00
chore(trie): StorageRootProvider (#10592)
This commit is contained in:
@ -2,7 +2,7 @@ use crate::{
|
||||
AccountReader, BlockHashReader, ExecutionDataProvider, StateProvider, StateRootProvider,
|
||||
};
|
||||
use reth_primitives::{Account, Address, BlockNumber, Bytecode, Bytes, B256};
|
||||
use reth_storage_api::StateProofProvider;
|
||||
use reth_storage_api::{StateProofProvider, StorageRootProvider};
|
||||
use reth_storage_errors::provider::ProviderResult;
|
||||
use reth_trie::{
|
||||
prefix_set::TriePrefixSetsMut, updates::TrieUpdates, AccountProof, HashedPostState,
|
||||
@ -127,7 +127,11 @@ impl<SP: StateProvider, EDP: ExecutionDataProvider> StateRootProvider
|
||||
state_prefix_sets,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl<SP: StateProvider, EDP: ExecutionDataProvider> StorageRootProvider
|
||||
for BundleStateProvider<SP, EDP>
|
||||
{
|
||||
fn hashed_storage_root(
|
||||
&self,
|
||||
address: Address,
|
||||
|
||||
@ -13,7 +13,7 @@ use reth_primitives::{
|
||||
constants::EPOCH_SLOTS, Account, Address, BlockNumber, Bytecode, Bytes, StaticFileSegment,
|
||||
StorageKey, StorageValue, B256,
|
||||
};
|
||||
use reth_storage_api::StateProofProvider;
|
||||
use reth_storage_api::{StateProofProvider, StorageRootProvider};
|
||||
use reth_storage_errors::provider::ProviderResult;
|
||||
use reth_trie::{
|
||||
prefix_set::TriePrefixSetsMut, proof::Proof, updates::TrieUpdates, witness::TrieWitness,
|
||||
@ -334,7 +334,9 @@ impl<'b, TX: DbTx> StateRootProvider for HistoricalStateProviderRef<'b, TX> {
|
||||
)
|
||||
.map_err(|err| ProviderError::Database(err.into()))
|
||||
}
|
||||
}
|
||||
|
||||
impl<'b, TX: DbTx> StorageRootProvider for HistoricalStateProviderRef<'b, TX> {
|
||||
fn hashed_storage_root(
|
||||
&self,
|
||||
address: Address,
|
||||
|
||||
@ -13,7 +13,7 @@ use reth_primitives::{
|
||||
Account, Address, BlockNumber, Bytecode, Bytes, StaticFileSegment, StorageKey, StorageValue,
|
||||
B256,
|
||||
};
|
||||
use reth_storage_api::StateProofProvider;
|
||||
use reth_storage_api::{StateProofProvider, StorageRootProvider};
|
||||
use reth_storage_errors::provider::{ProviderError, ProviderResult};
|
||||
use reth_trie::{
|
||||
prefix_set::TriePrefixSetsMut, proof::Proof, updates::TrieUpdates, witness::TrieWitness,
|
||||
@ -113,7 +113,9 @@ impl<'b, TX: DbTx> StateRootProvider for LatestStateProviderRef<'b, TX> {
|
||||
StateRoot::overlay_root_from_nodes_with_updates(self.tx, nodes, hashed_state, prefix_sets)
|
||||
.map_err(|err| ProviderError::Database(err.into()))
|
||||
}
|
||||
}
|
||||
|
||||
impl<'b, TX: DbTx> StorageRootProvider for LatestStateProviderRef<'b, TX> {
|
||||
fn hashed_storage_root(
|
||||
&self,
|
||||
address: Address,
|
||||
|
||||
@ -48,6 +48,8 @@ macro_rules! delegate_provider_impls {
|
||||
fn state_root_with_updates(&self, state: &revm::db::BundleState) -> reth_storage_errors::provider::ProviderResult<(reth_primitives::B256, reth_trie::updates::TrieUpdates)>;
|
||||
fn hashed_state_root_with_updates(&self, state: reth_trie::HashedPostState) -> reth_storage_errors::provider::ProviderResult<(reth_primitives::B256, reth_trie::updates::TrieUpdates)>;
|
||||
fn hashed_state_root_from_nodes_with_updates(&self, nodes: reth_trie::updates::TrieUpdates, state: reth_trie::HashedPostState, prefix_sets: reth_trie::prefix_set::TriePrefixSetsMut) -> reth_storage_errors::provider::ProviderResult<(reth_primitives::B256, reth_trie::updates::TrieUpdates)>;
|
||||
}
|
||||
StorageRootProvider $(where [$($generics)*])? {
|
||||
fn hashed_storage_root(&self, address: reth_primitives::Address, storage: reth_trie::HashedStorage) -> reth_storage_errors::provider::ProviderResult<reth_primitives::B256>;
|
||||
}
|
||||
StateProofProvider $(where [$($generics)*])? {
|
||||
|
||||
@ -17,7 +17,7 @@ use reth_primitives::{
|
||||
U256,
|
||||
};
|
||||
use reth_stages_types::{StageCheckpoint, StageId};
|
||||
use reth_storage_api::{StageCheckpointReader, StateProofProvider};
|
||||
use reth_storage_api::{StageCheckpointReader, StateProofProvider, StorageRootProvider};
|
||||
use reth_storage_errors::provider::{ProviderError, ProviderResult};
|
||||
use reth_trie::{
|
||||
prefix_set::TriePrefixSetsMut, updates::TrieUpdates, AccountProof, HashedPostState,
|
||||
@ -589,14 +589,6 @@ impl StateRootProvider for MockEthProvider {
|
||||
Ok((state_root, Default::default()))
|
||||
}
|
||||
|
||||
fn hashed_storage_root(
|
||||
&self,
|
||||
_address: Address,
|
||||
_hashed_storage: HashedStorage,
|
||||
) -> ProviderResult<B256> {
|
||||
Ok(B256::default())
|
||||
}
|
||||
|
||||
fn hashed_state_root_from_nodes_with_updates(
|
||||
&self,
|
||||
_nodes: TrieUpdates,
|
||||
@ -608,6 +600,16 @@ impl StateRootProvider for MockEthProvider {
|
||||
}
|
||||
}
|
||||
|
||||
impl StorageRootProvider for MockEthProvider {
|
||||
fn hashed_storage_root(
|
||||
&self,
|
||||
_address: Address,
|
||||
_hashed_storage: HashedStorage,
|
||||
) -> ProviderResult<B256> {
|
||||
Ok(B256::default())
|
||||
}
|
||||
}
|
||||
|
||||
impl StateProofProvider for MockEthProvider {
|
||||
fn proof(
|
||||
&self,
|
||||
|
||||
@ -20,10 +20,11 @@ use reth_primitives::{
|
||||
};
|
||||
use reth_prune_types::{PruneCheckpoint, PruneSegment};
|
||||
use reth_stages_types::{StageCheckpoint, StageId};
|
||||
use reth_storage_api::StateProofProvider;
|
||||
use reth_storage_api::{StateProofProvider, StorageRootProvider};
|
||||
use reth_storage_errors::provider::ProviderResult;
|
||||
use reth_trie::{
|
||||
prefix_set::TriePrefixSetsMut, updates::TrieUpdates, AccountProof, HashedPostState,
|
||||
HashedStorage,
|
||||
};
|
||||
use revm::primitives::{BlockEnv, CfgEnvWithHandlerCfg};
|
||||
use tokio::sync::{broadcast, watch};
|
||||
@ -349,11 +350,13 @@ impl StateRootProvider for NoopProvider {
|
||||
) -> ProviderResult<(B256, TrieUpdates)> {
|
||||
Ok((B256::default(), TrieUpdates::default()))
|
||||
}
|
||||
}
|
||||
|
||||
impl StorageRootProvider for NoopProvider {
|
||||
fn hashed_storage_root(
|
||||
&self,
|
||||
_address: Address,
|
||||
_hashed_storage: reth_trie::HashedStorage,
|
||||
_hashed_storage: HashedStorage,
|
||||
) -> ProviderResult<B256> {
|
||||
Ok(B256::default())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user