diff --git a/Cargo.lock b/Cargo.lock index bb2bef03ad..131d359206 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7661,7 +7661,6 @@ dependencies = [ "metrics", "parking_lot", "rand 0.8.5", - "reth-blockchain-tree", "reth-chain-state", "reth-chainspec", "reth-config", @@ -7698,7 +7697,6 @@ dependencies = [ "eyre", "futures-util", "rand 0.8.5", - "reth-blockchain-tree", "reth-chainspec", "reth-config", "reth-consensus", diff --git a/crates/exex/exex/Cargo.toml b/crates/exex/exex/Cargo.toml index ce00c75e18..60ba7e25a6 100644 --- a/crates/exex/exex/Cargo.toml +++ b/crates/exex/exex/Cargo.toml @@ -53,7 +53,6 @@ rmp-serde = "1.3" tracing.workspace = true [dev-dependencies] -reth-blockchain-tree.workspace = true reth-db-common.workspace = true reth-evm-ethereum.workspace = true reth-node-api.workspace = true diff --git a/crates/exex/exex/src/backfill/job.rs b/crates/exex/exex/src/backfill/job.rs index 8ad8692ae6..fca2cb9a2e 100644 --- a/crates/exex/exex/src/backfill/job.rs +++ b/crates/exex/exex/src/backfill/job.rs @@ -231,16 +231,14 @@ mod tests { backfill::test_utils::{blocks_and_execution_outputs, chain_spec, to_execution_outcome}, BackfillJobFactory, }; - use reth_blockchain_tree::noop::NoopBlockchainTree; use reth_db_common::init::init_genesis; use reth_evm_ethereum::execute::EthExecutorProvider; use reth_primitives_traits::crypto::secp256k1::public_key_to_address; use reth_provider::{ - providers::BlockchainProvider, test_utils::create_test_provider_factory_with_chain_spec, + providers::BlockchainProvider2, test_utils::create_test_provider_factory_with_chain_spec, }; use reth_testing_utils::generators; use secp256k1::Keypair; - use std::sync::Arc; #[test] fn test_backfill() -> eyre::Result<()> { @@ -255,10 +253,7 @@ mod tests { let executor = EthExecutorProvider::ethereum(chain_spec.clone()); let provider_factory = create_test_provider_factory_with_chain_spec(chain_spec.clone()); init_genesis(&provider_factory)?; - let blockchain_db = BlockchainProvider::new( - provider_factory.clone(), - Arc::new(NoopBlockchainTree::default()), - )?; + let blockchain_db = BlockchainProvider2::new(provider_factory.clone())?; let blocks_and_execution_outputs = blocks_and_execution_outputs(provider_factory, chain_spec, key_pair)?; @@ -294,10 +289,7 @@ mod tests { let executor = EthExecutorProvider::ethereum(chain_spec.clone()); let provider_factory = create_test_provider_factory_with_chain_spec(chain_spec.clone()); init_genesis(&provider_factory)?; - let blockchain_db = BlockchainProvider::new( - provider_factory.clone(), - Arc::new(NoopBlockchainTree::default()), - )?; + let blockchain_db = BlockchainProvider2::new(provider_factory.clone())?; let blocks_and_execution_outcomes = blocks_and_execution_outputs(provider_factory, chain_spec, key_pair)?; diff --git a/crates/exex/exex/src/backfill/stream.rs b/crates/exex/exex/src/backfill/stream.rs index 8e572422e4..6111ae8fe4 100644 --- a/crates/exex/exex/src/backfill/stream.rs +++ b/crates/exex/exex/src/backfill/stream.rs @@ -242,17 +242,15 @@ mod tests { BackfillJobFactory, }; use futures::StreamExt; - use reth_blockchain_tree::noop::NoopBlockchainTree; use reth_db_common::init::init_genesis; use reth_evm_ethereum::execute::EthExecutorProvider; use reth_primitives_traits::crypto::secp256k1::public_key_to_address; use reth_provider::{ - providers::BlockchainProvider, test_utils::create_test_provider_factory_with_chain_spec, + providers::BlockchainProvider2, test_utils::create_test_provider_factory_with_chain_spec, }; use reth_stages_api::ExecutionStageThresholds; use reth_testing_utils::generators; use secp256k1::Keypair; - use std::sync::Arc; #[tokio::test] async fn test_single_blocks() -> eyre::Result<()> { @@ -267,10 +265,7 @@ mod tests { let executor = EthExecutorProvider::ethereum(chain_spec.clone()); let provider_factory = create_test_provider_factory_with_chain_spec(chain_spec.clone()); init_genesis(&provider_factory)?; - let blockchain_db = BlockchainProvider::new( - provider_factory.clone(), - Arc::new(NoopBlockchainTree::default()), - )?; + let blockchain_db = BlockchainProvider2::new(provider_factory.clone())?; // Create first 2 blocks let blocks_and_execution_outcomes = @@ -308,10 +303,7 @@ mod tests { let executor = EthExecutorProvider::ethereum(chain_spec.clone()); let provider_factory = create_test_provider_factory_with_chain_spec(chain_spec.clone()); init_genesis(&provider_factory)?; - let blockchain_db = BlockchainProvider::new( - provider_factory.clone(), - Arc::new(NoopBlockchainTree::default()), - )?; + let blockchain_db = BlockchainProvider2::new(provider_factory.clone())?; // Create first 2 blocks let (blocks, execution_outcome) = diff --git a/crates/exex/test-utils/Cargo.toml b/crates/exex/test-utils/Cargo.toml index 6e5af981b3..be3d40c7f2 100644 --- a/crates/exex/test-utils/Cargo.toml +++ b/crates/exex/test-utils/Cargo.toml @@ -13,7 +13,6 @@ workspace = true [dependencies] ## reth reth-chainspec.workspace = true -reth-blockchain-tree.workspace = true reth-config.workspace = true reth-consensus = { workspace = true, features = ["test-utils"] } reth-db = { workspace = true, features = ["test-utils"] } diff --git a/crates/exex/test-utils/src/lib.rs b/crates/exex/test-utils/src/lib.rs index be15828681..77289a73ca 100644 --- a/crates/exex/test-utils/src/lib.rs +++ b/crates/exex/test-utils/src/lib.rs @@ -17,7 +17,6 @@ use std::{ use alloy_eips::BlockNumHash; use futures_util::FutureExt; -use reth_blockchain_tree::noop::NoopBlockchainTree; use reth_chainspec::{ChainSpec, MAINNET}; use reth_consensus::test_utils::TestConsensus; use reth_db::{ @@ -38,7 +37,7 @@ use reth_node_builder::{ Components, ComponentsBuilder, ConsensusBuilder, ExecutorBuilder, NodeComponentsBuilder, PoolBuilder, }, - BuilderContext, Node, NodeAdapter, RethFullAdapter, + BuilderContext, Node, NodeAdapter, RethFullAdapter2, }; use reth_node_core::node_config::NodeConfig; use reth_node_ethereum::{ @@ -47,13 +46,11 @@ use reth_node_ethereum::{ }; use reth_payload_builder::noop::NoopPayloadBuilderService; use reth_primitives::{BlockExt, EthPrimitives, Head, SealedBlockWithSenders, TransactionSigned}; -use reth_provider::{ - providers::{BlockchainProvider, StaticFileProvider}, - BlockReader, EthStorage, ProviderFactory, -}; +use reth_provider::{providers::StaticFileProvider, BlockReader, EthStorage, ProviderFactory}; use reth_tasks::TaskManager; use reth_transaction_pool::test_utils::{testing_pool, TestPool}; +use reth_provider::providers::BlockchainProvider2; use tempfile::TempDir; use thiserror::Error; use tokio::sync::mpsc::{Sender, UnboundedReceiver}; @@ -172,14 +169,14 @@ pub type TmpDB = Arc>; /// The [`NodeAdapter`] for the [`TestExExContext`]. Contains type necessary to /// boot the testing environment pub type Adapter = NodeAdapter< - RethFullAdapter, + RethFullAdapter2, <>, + BlockchainProvider2>, >, - >>::ComponentsBuilder as NodeComponentsBuilder>>::Components, + >>::ComponentsBuilder as NodeComponentsBuilder>>::Components, >; /// An [`ExExContext`] using the [`Adapter`] type. pub type TestExExContext = ExExContext; @@ -274,8 +271,7 @@ pub async fn test_exex_context_with_chain_spec( ); let genesis_hash = init_genesis(&provider_factory)?; - let provider = - BlockchainProvider::new(provider_factory.clone(), Arc::new(NoopBlockchainTree::default()))?; + let provider = BlockchainProvider2::new(provider_factory.clone())?; let network_manager = NetworkManager::new( NetworkConfigBuilder::new(SecretKey::new(&mut rand::thread_rng())) diff --git a/crates/node/builder/src/builder/mod.rs b/crates/node/builder/src/builder/mod.rs index 8ffe357fd5..47d9a54572 100644 --- a/crates/node/builder/src/builder/mod.rs +++ b/crates/node/builder/src/builder/mod.rs @@ -34,7 +34,7 @@ use reth_node_core::{ primitives::Head, }; use reth_provider::{ - providers::{BlockchainProvider, NodeTypesForProvider}, + providers::{BlockchainProvider, BlockchainProvider2, NodeTypesForProvider}, ChainSpecProvider, FullProvider, }; use reth_tasks::TaskExecutor; @@ -53,6 +53,11 @@ pub use states::*; pub type RethFullAdapter = FullNodeTypesAdapter>>; +/// The adapter type for a reth node with the builtin provider type +// Note: we need to hardcode this because custom components might depend on it in associated types. +pub type RethFullAdapter2 = + FullNodeTypesAdapter>>; + #[allow(clippy::doc_markdown)] #[cfg_attr(doc, aquamarine::aquamarine)] /// Declaratively construct a node.