From 7603b7489041314a806e97e22028e71fd69f1d3f Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Sat, 8 Feb 2025 08:09:27 +0100 Subject: [PATCH] feat: add providerfactory builder to OpNode (#14322) --- crates/ethereum/node/src/node.rs | 4 ++-- crates/optimism/node/src/node.rs | 36 +++++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/crates/ethereum/node/src/node.rs b/crates/ethereum/node/src/node.rs index c85a93b31..e0b09e65e 100644 --- a/crates/ethereum/node/src/node.rs +++ b/crates/ethereum/node/src/node.rs @@ -87,10 +87,10 @@ impl EthereumNode { /// use reth_db::open_db_read_only; /// use reth_node_ethereum::EthereumNode; /// use reth_provider::providers::StaticFileProvider; - /// use std::{path::Path, sync::Arc}; + /// use std::sync::Arc; /// /// let factory = EthereumNode::provider_factory_builder() - /// .db(Arc::new(open_db_read_only(Path::new("db"), Default::default()).unwrap())) + /// .db(Arc::new(open_db_read_only("db", Default::default()).unwrap())) /// .chainspec(ChainSpecBuilder::mainnet().build().into()) /// .static_file(StaticFileProvider::read_only("db/static_files", false).unwrap()) /// .build_provider_factory(); diff --git a/crates/optimism/node/src/node.rs b/crates/optimism/node/src/node.rs index 68c5bdc32..835cc9a22 100644 --- a/crates/optimism/node/src/node.rs +++ b/crates/optimism/node/src/node.rs @@ -38,7 +38,7 @@ use reth_optimism_rpc::{ witness::{DebugExecutionWitnessApiServer, OpDebugWitnessApi}, OpEthApi, OpEthApiError, SequencerClient, }; -use reth_provider::{CanonStateSubscriptions, EthStorage}; +use reth_provider::{providers::ProviderFactoryBuilder, CanonStateSubscriptions, EthStorage}; use reth_rpc_eth_types::error::FromEvmError; use reth_rpc_server_types::RethRpcModule; use reth_tracing::tracing::{debug, info}; @@ -115,6 +115,40 @@ impl OpNode { .executor(OpExecutorBuilder::default()) .consensus(OpConsensusBuilder::default()) } + + /// Instantiates the [`ProviderFactoryBuilder`] for an opstack node. + /// + /// # Open a Providerfactory in read-only mode from a datadir + /// + /// See also: [`ProviderFactoryBuilder`] and + /// [`ReadOnlyConfig`](reth_provider::providers::ReadOnlyConfig). + /// + /// ```no_run + /// use reth_optimism_chainspec::BASE_MAINNET; + /// use reth_optimism_node::OpNode; + /// + /// let factory = + /// OpNode::provider_factory_builder().open_read_only(BASE_MAINNET.clone(), "datadir").unwrap(); + /// ``` + /// + /// # Open a Providerfactory manually with with all required components + /// + /// ```no_run + /// use reth_db::open_db_read_only; + /// use reth_optimism_chainspec::OpChainSpecBuilder; + /// use reth_optimism_node::OpNode; + /// use reth_provider::providers::StaticFileProvider; + /// use std::sync::Arc; + /// + /// let factory = OpNode::provider_factory_builder() + /// .db(Arc::new(open_db_read_only("db", Default::default()).unwrap())) + /// .chainspec(OpChainSpecBuilder::base_mainnet().build().into()) + /// .static_file(StaticFileProvider::read_only("db/static_files", false).unwrap()) + /// .build_provider_factory(); + /// ``` + pub fn provider_factory_builder() -> ProviderFactoryBuilder { + ProviderFactoryBuilder::default() + } } impl Node for OpNode