mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-01-27 08:08:15 -05:00
chore(trie): trie_type behind flag (#15690)
This commit is contained in:
@@ -26,7 +26,7 @@ use reth_trie::{
|
||||
updates::TrieUpdatesSorted,
|
||||
walker::TrieWalker,
|
||||
HashBuilder, HashedPostStateSorted, MultiProof, MultiProofTargets, Nibbles, StorageMultiProof,
|
||||
TrieType, TRIE_ACCOUNT_RLP_MAX_SIZE,
|
||||
TRIE_ACCOUNT_RLP_MAX_SIZE,
|
||||
};
|
||||
use reth_trie_common::proof::ProofRetainer;
|
||||
use reth_trie_db::{DatabaseHashedCursorFactory, DatabaseTrieCursorFactory};
|
||||
@@ -226,10 +226,9 @@ where
|
||||
let mut storages: B256Map<_> =
|
||||
targets.keys().map(|key| (*key, StorageMultiProof::empty())).collect();
|
||||
let mut account_rlp = Vec::with_capacity(TRIE_ACCOUNT_RLP_MAX_SIZE);
|
||||
let mut account_node_iter = TrieNodeIter::new(
|
||||
let mut account_node_iter = TrieNodeIter::state_trie(
|
||||
walker,
|
||||
hashed_cursor_factory.hashed_account_cursor().map_err(ProviderError::Database)?,
|
||||
TrieType::State,
|
||||
);
|
||||
while let Some(account_node) =
|
||||
account_node_iter.try_next().map_err(ProviderError::Database)?
|
||||
|
||||
@@ -16,7 +16,7 @@ use reth_trie::{
|
||||
trie_cursor::{InMemoryTrieCursorFactory, TrieCursorFactory},
|
||||
updates::TrieUpdates,
|
||||
walker::TrieWalker,
|
||||
HashBuilder, Nibbles, StorageRoot, TrieInput, TrieType, TRIE_ACCOUNT_RLP_MAX_SIZE,
|
||||
HashBuilder, Nibbles, StorageRoot, TrieInput, TRIE_ACCOUNT_RLP_MAX_SIZE,
|
||||
};
|
||||
use reth_trie_db::{DatabaseHashedCursorFactory, DatabaseTrieCursorFactory};
|
||||
use std::{collections::HashMap, sync::Arc};
|
||||
@@ -150,10 +150,9 @@ where
|
||||
prefix_sets.account_prefix_set,
|
||||
)
|
||||
.with_deletions_retained(retain_updates);
|
||||
let mut account_node_iter = TrieNodeIter::new(
|
||||
let mut account_node_iter = TrieNodeIter::state_trie(
|
||||
walker,
|
||||
hashed_cursor_factory.hashed_account_cursor().map_err(ProviderError::Database)?,
|
||||
TrieType::State,
|
||||
);
|
||||
|
||||
let mut hash_builder = HashBuilder::default().with_updates(retain_updates);
|
||||
|
||||
@@ -10,7 +10,7 @@ use reth_trie::{
|
||||
trie_cursor::{noop::NoopStorageTrieCursor, InMemoryStorageTrieCursor},
|
||||
updates::StorageTrieUpdates,
|
||||
walker::TrieWalker,
|
||||
HashedStorage, TrieType,
|
||||
HashedStorage,
|
||||
};
|
||||
use reth_trie_common::{HashBuilder, Nibbles};
|
||||
use reth_trie_sparse::SparseTrie;
|
||||
@@ -137,13 +137,12 @@ fn calculate_root_from_leaves_repeated(c: &mut Criterion) {
|
||||
),
|
||||
prefix_set,
|
||||
);
|
||||
let mut node_iter = TrieNodeIter::new(
|
||||
let mut node_iter = TrieNodeIter::storage_trie(
|
||||
walker,
|
||||
HashedPostStateStorageCursor::new(
|
||||
NoopHashedStorageCursor::default(),
|
||||
Some(&storage_sorted),
|
||||
),
|
||||
TrieType::Storage,
|
||||
);
|
||||
|
||||
let mut hb = HashBuilder::default().with_updates(true);
|
||||
|
||||
@@ -1595,7 +1595,7 @@ mod tests {
|
||||
node_iter::{TrieElement, TrieNodeIter},
|
||||
trie_cursor::{noop::NoopAccountTrieCursor, TrieCursor, TrieCursorFactory},
|
||||
walker::TrieWalker,
|
||||
BranchNode, ExtensionNode, HashedPostState, LeafNode, TrieType,
|
||||
BranchNode, ExtensionNode, HashedPostState, LeafNode,
|
||||
};
|
||||
use reth_trie_common::{
|
||||
proof::{ProofNodes, ProofRetainer},
|
||||
@@ -1646,13 +1646,12 @@ mod tests {
|
||||
(nibbles.pack().into_inner().unwrap().into(), Some(account))
|
||||
}))
|
||||
.into_sorted();
|
||||
let mut node_iter = TrieNodeIter::new(
|
||||
let mut node_iter = TrieNodeIter::state_trie(
|
||||
walker,
|
||||
HashedPostStateAccountCursor::new(
|
||||
NoopHashedAccountCursor::default(),
|
||||
hashed_post_state.accounts(),
|
||||
),
|
||||
TrieType::State,
|
||||
);
|
||||
|
||||
while let Some(node) = node_iter.try_next().unwrap() {
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
use crate::{
|
||||
hashed_cursor::HashedCursor, trie::TrieType, trie_cursor::TrieCursor, walker::TrieWalker,
|
||||
Nibbles,
|
||||
};
|
||||
use crate::{hashed_cursor::HashedCursor, trie_cursor::TrieCursor, walker::TrieWalker, Nibbles};
|
||||
use alloy_primitives::B256;
|
||||
use reth_storage_errors::db::DatabaseError;
|
||||
use tracing::trace;
|
||||
@@ -76,8 +73,32 @@ impl<C, H: HashedCursor> TrieNodeIter<C, H>
|
||||
where
|
||||
H::Value: Copy,
|
||||
{
|
||||
/// Creates a new [`TrieNodeIter`] for the state trie.
|
||||
pub fn state_trie(walker: TrieWalker<C>, hashed_cursor: H) -> Self {
|
||||
Self::new(
|
||||
walker,
|
||||
hashed_cursor,
|
||||
#[cfg(feature = "metrics")]
|
||||
crate::TrieType::State,
|
||||
)
|
||||
}
|
||||
|
||||
/// Creates a new [`TrieNodeIter`] for the storage trie.
|
||||
pub fn storage_trie(walker: TrieWalker<C>, hashed_cursor: H) -> Self {
|
||||
Self::new(
|
||||
walker,
|
||||
hashed_cursor,
|
||||
#[cfg(feature = "metrics")]
|
||||
crate::TrieType::Storage,
|
||||
)
|
||||
}
|
||||
|
||||
/// Creates a new [`TrieNodeIter`].
|
||||
pub fn new(walker: TrieWalker<C>, hashed_cursor: H, _trie_type: TrieType) -> Self {
|
||||
fn new(
|
||||
walker: TrieWalker<C>,
|
||||
hashed_cursor: H,
|
||||
#[cfg(feature = "metrics")] trie_type: crate::TrieType,
|
||||
) -> Self {
|
||||
Self {
|
||||
walker,
|
||||
hashed_cursor,
|
||||
@@ -86,7 +107,7 @@ where
|
||||
should_check_walker_key: false,
|
||||
last_seeked_hashed_entry: None,
|
||||
#[cfg(feature = "metrics")]
|
||||
metrics: crate::metrics::TrieNodeIterMetrics::new(_trie_type),
|
||||
metrics: crate::metrics::TrieNodeIterMetrics::new(trie_type),
|
||||
#[cfg(feature = "metrics")]
|
||||
previously_advanced_to_key: None,
|
||||
}
|
||||
@@ -272,8 +293,17 @@ where
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
use crate::{
|
||||
hashed_cursor::{
|
||||
mock::MockHashedCursorFactory, noop::NoopHashedAccountCursor, HashedCursorFactory,
|
||||
HashedPostStateAccountCursor,
|
||||
},
|
||||
mock::{KeyVisit, KeyVisitType},
|
||||
trie_cursor::{
|
||||
mock::MockTrieCursorFactory, noop::NoopAccountTrieCursor, TrieCursorFactory,
|
||||
},
|
||||
walker::TrieWalker,
|
||||
};
|
||||
use alloy_primitives::{
|
||||
b256,
|
||||
map::{B256Map, HashMap},
|
||||
@@ -287,19 +317,7 @@ mod tests {
|
||||
prefix_set::PrefixSetMut, updates::TrieUpdates, BranchNode, HashedPostState, LeafNode,
|
||||
RlpNode,
|
||||
};
|
||||
|
||||
use crate::{
|
||||
hashed_cursor::{
|
||||
mock::MockHashedCursorFactory, noop::NoopHashedAccountCursor, HashedCursorFactory,
|
||||
HashedPostStateAccountCursor,
|
||||
},
|
||||
mock::{KeyVisit, KeyVisitType},
|
||||
trie::TrieType,
|
||||
trie_cursor::{
|
||||
mock::MockTrieCursorFactory, noop::NoopAccountTrieCursor, TrieCursorFactory,
|
||||
},
|
||||
walker::TrieWalker,
|
||||
};
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
use super::{TrieElement, TrieNodeIter};
|
||||
|
||||
@@ -320,13 +338,12 @@ mod tests {
|
||||
}))
|
||||
.into_sorted();
|
||||
|
||||
let mut node_iter = TrieNodeIter::new(
|
||||
let mut node_iter = TrieNodeIter::state_trie(
|
||||
walker,
|
||||
HashedPostStateAccountCursor::new(
|
||||
NoopHashedAccountCursor::default(),
|
||||
hashed_post_state.accounts(),
|
||||
),
|
||||
TrieType::State,
|
||||
);
|
||||
|
||||
while let Some(node) = node_iter.try_next().unwrap() {
|
||||
@@ -456,10 +473,9 @@ mod tests {
|
||||
B256Map::default(),
|
||||
);
|
||||
|
||||
let mut iter = TrieNodeIter::new(
|
||||
let mut iter = TrieNodeIter::state_trie(
|
||||
walker,
|
||||
hashed_cursor_factory.hashed_account_cursor().unwrap(),
|
||||
TrieType::State,
|
||||
);
|
||||
|
||||
// Walk the iterator until it's exhausted.
|
||||
|
||||
@@ -2,7 +2,6 @@ use crate::{
|
||||
hashed_cursor::{HashedCursorFactory, HashedStorageCursor},
|
||||
node_iter::{TrieElement, TrieNodeIter},
|
||||
prefix_set::{PrefixSetMut, TriePrefixSetsMut},
|
||||
trie::TrieType,
|
||||
trie_cursor::TrieCursorFactory,
|
||||
walker::TrieWalker,
|
||||
HashBuilder, Nibbles, TRIE_ACCOUNT_RLP_MAX_SIZE,
|
||||
@@ -125,8 +124,7 @@ where
|
||||
let mut storages: B256Map<_> =
|
||||
targets.keys().map(|key| (*key, StorageMultiProof::empty())).collect();
|
||||
let mut account_rlp = Vec::with_capacity(TRIE_ACCOUNT_RLP_MAX_SIZE);
|
||||
let mut account_node_iter =
|
||||
TrieNodeIter::new(walker, hashed_account_cursor, TrieType::State);
|
||||
let mut account_node_iter = TrieNodeIter::state_trie(walker, hashed_account_cursor);
|
||||
while let Some(account_node) = account_node_iter.try_next()? {
|
||||
match account_node {
|
||||
TrieElement::Branch(node) => {
|
||||
@@ -290,8 +288,7 @@ where
|
||||
let mut hash_builder = HashBuilder::default()
|
||||
.with_proof_retainer(retainer)
|
||||
.with_updates(self.collect_branch_node_masks);
|
||||
let mut storage_node_iter =
|
||||
TrieNodeIter::new(walker, hashed_storage_cursor, TrieType::Storage);
|
||||
let mut storage_node_iter = TrieNodeIter::storage_trie(walker, hashed_storage_cursor);
|
||||
while let Some(node) = storage_node_iter.try_next()? {
|
||||
match node {
|
||||
TrieElement::Branch(node) => {
|
||||
|
||||
@@ -165,7 +165,7 @@ where
|
||||
self.prefix_sets.account_prefix_set,
|
||||
)
|
||||
.with_deletions_retained(retain_updates);
|
||||
let node_iter = TrieNodeIter::new(walker, hashed_account_cursor, TrieType::State)
|
||||
let node_iter = TrieNodeIter::state_trie(walker, hashed_account_cursor)
|
||||
.with_last_hashed_key(state.last_account_key);
|
||||
(hash_builder, node_iter)
|
||||
}
|
||||
@@ -173,7 +173,7 @@ where
|
||||
let hash_builder = HashBuilder::default().with_updates(retain_updates);
|
||||
let walker = TrieWalker::new(trie_cursor, self.prefix_sets.account_prefix_set)
|
||||
.with_deletions_retained(retain_updates);
|
||||
let node_iter = TrieNodeIter::new(walker, hashed_account_cursor, TrieType::State);
|
||||
let node_iter = TrieNodeIter::state_trie(walker, hashed_account_cursor);
|
||||
(hash_builder, node_iter)
|
||||
}
|
||||
};
|
||||
@@ -412,8 +412,7 @@ where
|
||||
|
||||
let mut hash_builder = HashBuilder::default().with_updates(retain_updates);
|
||||
|
||||
let mut storage_node_iter =
|
||||
TrieNodeIter::new(walker, hashed_storage_cursor, TrieType::Storage);
|
||||
let mut storage_node_iter = TrieNodeIter::storage_trie(walker, hashed_storage_cursor);
|
||||
while let Some(node) = storage_node_iter.try_next()? {
|
||||
match node {
|
||||
TrieElement::Branch(node) => {
|
||||
|
||||
Reference in New Issue
Block a user