mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
chore: remove blockchaintree dep from reth bin (#13712)
This commit is contained in:
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -6401,7 +6401,6 @@ dependencies = [
|
|||||||
"futures",
|
"futures",
|
||||||
"reth-basic-payload-builder",
|
"reth-basic-payload-builder",
|
||||||
"reth-beacon-consensus",
|
"reth-beacon-consensus",
|
||||||
"reth-blockchain-tree",
|
|
||||||
"reth-chainspec",
|
"reth-chainspec",
|
||||||
"reth-cli",
|
"reth-cli",
|
||||||
"reth-cli-commands",
|
"reth-cli-commands",
|
||||||
@ -6413,7 +6412,6 @@ dependencies = [
|
|||||||
"reth-db",
|
"reth-db",
|
||||||
"reth-db-api",
|
"reth-db-api",
|
||||||
"reth-downloaders",
|
"reth-downloaders",
|
||||||
"reth-engine-util",
|
|
||||||
"reth-errors",
|
"reth-errors",
|
||||||
"reth-ethereum-cli",
|
"reth-ethereum-cli",
|
||||||
"reth-ethereum-payload-builder",
|
"reth-ethereum-payload-builder",
|
||||||
|
|||||||
@ -36,7 +36,6 @@ reth-cli-runner.workspace = true
|
|||||||
reth-cli-commands.workspace = true
|
reth-cli-commands.workspace = true
|
||||||
reth-cli-util.workspace = true
|
reth-cli-util.workspace = true
|
||||||
reth-consensus-common.workspace = true
|
reth-consensus-common.workspace = true
|
||||||
reth-blockchain-tree.workspace = true
|
|
||||||
reth-rpc-builder.workspace = true
|
reth-rpc-builder.workspace = true
|
||||||
reth-rpc.workspace = true
|
reth-rpc.workspace = true
|
||||||
reth-rpc-types-compat.workspace = true
|
reth-rpc-types-compat.workspace = true
|
||||||
@ -64,7 +63,6 @@ reth-node-builder.workspace = true
|
|||||||
reth-node-events.workspace = true
|
reth-node-events.workspace = true
|
||||||
reth-node-metrics.workspace = true
|
reth-node-metrics.workspace = true
|
||||||
reth-consensus.workspace = true
|
reth-consensus.workspace = true
|
||||||
reth-engine-util.workspace = true
|
|
||||||
reth-prune.workspace = true
|
reth-prune.workspace = true
|
||||||
|
|
||||||
# crypto
|
# crypto
|
||||||
|
|||||||
@ -13,9 +13,6 @@ use reth_basic_payload_builder::{
|
|||||||
BuildArguments, BuildOutcome, Cancelled, PayloadBuilder, PayloadConfig,
|
BuildArguments, BuildOutcome, Cancelled, PayloadBuilder, PayloadConfig,
|
||||||
};
|
};
|
||||||
use reth_beacon_consensus::EthBeaconConsensus;
|
use reth_beacon_consensus::EthBeaconConsensus;
|
||||||
use reth_blockchain_tree::{
|
|
||||||
BlockchainTree, BlockchainTreeConfig, ShareableBlockchainTree, TreeExternals,
|
|
||||||
};
|
|
||||||
use reth_chainspec::ChainSpec;
|
use reth_chainspec::ChainSpec;
|
||||||
use reth_cli::chainspec::ChainSpecParser;
|
use reth_cli::chainspec::ChainSpecParser;
|
||||||
use reth_cli_commands::common::{AccessRights, CliNodeTypes, Environment, EnvironmentArgs};
|
use reth_cli_commands::common::{AccessRights, CliNodeTypes, Environment, EnvironmentArgs};
|
||||||
@ -33,7 +30,7 @@ use reth_primitives::{
|
|||||||
TransactionSigned,
|
TransactionSigned,
|
||||||
};
|
};
|
||||||
use reth_provider::{
|
use reth_provider::{
|
||||||
providers::{BlockchainProvider, ProviderNodeTypes},
|
providers::{BlockchainProvider2, ProviderNodeTypes},
|
||||||
BlockHashReader, BlockReader, BlockWriter, ChainSpecProvider, ProviderFactory,
|
BlockHashReader, BlockReader, BlockWriter, ChainSpecProvider, ProviderFactory,
|
||||||
StageCheckpointReader, StateProviderFactory,
|
StageCheckpointReader, StateProviderFactory,
|
||||||
};
|
};
|
||||||
@ -131,21 +128,12 @@ impl<C: ChainSpecParser<ChainSpec = ChainSpec>> Command<C> {
|
|||||||
let consensus: Arc<dyn FullConsensus<Error = ConsensusError>> =
|
let consensus: Arc<dyn FullConsensus<Error = ConsensusError>> =
|
||||||
Arc::new(EthBeaconConsensus::new(provider_factory.chain_spec()));
|
Arc::new(EthBeaconConsensus::new(provider_factory.chain_spec()));
|
||||||
|
|
||||||
let executor = EthExecutorProvider::ethereum(provider_factory.chain_spec());
|
|
||||||
|
|
||||||
// configure blockchain tree
|
|
||||||
let tree_externals =
|
|
||||||
TreeExternals::new(provider_factory.clone(), Arc::clone(&consensus), executor);
|
|
||||||
let tree = BlockchainTree::new(tree_externals, BlockchainTreeConfig::default())?;
|
|
||||||
let blockchain_tree = Arc::new(ShareableBlockchainTree::new(tree));
|
|
||||||
|
|
||||||
// fetch the best block from the database
|
// fetch the best block from the database
|
||||||
let best_block = self
|
let best_block = self
|
||||||
.lookup_best_block(provider_factory.clone())
|
.lookup_best_block(provider_factory.clone())
|
||||||
.wrap_err("the head block is missing")?;
|
.wrap_err("the head block is missing")?;
|
||||||
|
|
||||||
let blockchain_db =
|
let blockchain_db = BlockchainProvider2::new(provider_factory.clone())?;
|
||||||
BlockchainProvider::new(provider_factory.clone(), blockchain_tree.clone())?;
|
|
||||||
let blob_store = InMemoryBlobStore::default();
|
let blob_store = InMemoryBlobStore::default();
|
||||||
|
|
||||||
let validator =
|
let validator =
|
||||||
|
|||||||
@ -12,7 +12,6 @@ mod build_block;
|
|||||||
mod execution;
|
mod execution;
|
||||||
mod in_memory_merkle;
|
mod in_memory_merkle;
|
||||||
mod merkle;
|
mod merkle;
|
||||||
mod replay_engine;
|
|
||||||
|
|
||||||
/// `reth debug` command
|
/// `reth debug` command
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
@ -32,8 +31,6 @@ pub enum Subcommands<C: ChainSpecParser> {
|
|||||||
InMemoryMerkle(in_memory_merkle::Command<C>),
|
InMemoryMerkle(in_memory_merkle::Command<C>),
|
||||||
/// Debug block building.
|
/// Debug block building.
|
||||||
BuildBlock(build_block::Command<C>),
|
BuildBlock(build_block::Command<C>),
|
||||||
/// Debug engine API by replaying stored messages.
|
|
||||||
ReplayEngine(replay_engine::Command<C>),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<C: ChainSpecParser<ChainSpec = ChainSpec>> Command<C> {
|
impl<C: ChainSpecParser<ChainSpec = ChainSpec>> Command<C> {
|
||||||
@ -49,7 +46,6 @@ impl<C: ChainSpecParser<ChainSpec = ChainSpec>> Command<C> {
|
|||||||
Subcommands::Merkle(command) => command.execute::<N>(ctx).await,
|
Subcommands::Merkle(command) => command.execute::<N>(ctx).await,
|
||||||
Subcommands::InMemoryMerkle(command) => command.execute::<N>(ctx).await,
|
Subcommands::InMemoryMerkle(command) => command.execute::<N>(ctx).await,
|
||||||
Subcommands::BuildBlock(command) => command.execute::<N>(ctx).await,
|
Subcommands::BuildBlock(command) => command.execute::<N>(ctx).await,
|
||||||
Subcommands::ReplayEngine(command) => command.execute::<N>(ctx).await,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,212 +0,0 @@
|
|||||||
use crate::args::NetworkArgs;
|
|
||||||
use clap::Parser;
|
|
||||||
use eyre::Context;
|
|
||||||
use reth_basic_payload_builder::{BasicPayloadJobGenerator, BasicPayloadJobGeneratorConfig};
|
|
||||||
use reth_beacon_consensus::{hooks::EngineHooks, BeaconConsensusEngine, EthBeaconConsensus};
|
|
||||||
use reth_blockchain_tree::{
|
|
||||||
BlockchainTree, BlockchainTreeConfig, ShareableBlockchainTree, TreeExternals,
|
|
||||||
};
|
|
||||||
use reth_chainspec::ChainSpec;
|
|
||||||
use reth_cli::chainspec::ChainSpecParser;
|
|
||||||
use reth_cli_commands::common::{AccessRights, CliNodeTypes, Environment, EnvironmentArgs};
|
|
||||||
use reth_cli_runner::CliContext;
|
|
||||||
use reth_cli_util::get_secret_key;
|
|
||||||
use reth_config::Config;
|
|
||||||
use reth_consensus::{ConsensusError, FullConsensus};
|
|
||||||
use reth_db::DatabaseEnv;
|
|
||||||
use reth_engine_util::engine_store::{EngineMessageStore, StoredEngineApiMessage};
|
|
||||||
use reth_ethereum_payload_builder::EthereumBuilderConfig;
|
|
||||||
use reth_fs_util as fs;
|
|
||||||
use reth_network::{BlockDownloaderProvider, NetworkHandle};
|
|
||||||
use reth_network_api::NetworkInfo;
|
|
||||||
use reth_node_api::{EngineApiMessageVersion, NodePrimitives, NodeTypesWithDBAdapter};
|
|
||||||
use reth_node_ethereum::{EthEngineTypes, EthEvmConfig, EthExecutorProvider};
|
|
||||||
use reth_payload_builder::{PayloadBuilderHandle, PayloadBuilderService};
|
|
||||||
use reth_primitives::EthPrimitives;
|
|
||||||
use reth_provider::{
|
|
||||||
providers::{BlockchainProvider, ProviderNodeTypes},
|
|
||||||
CanonStateSubscriptions, ChainSpecProvider, ProviderFactory,
|
|
||||||
};
|
|
||||||
use reth_prune::PruneModes;
|
|
||||||
use reth_stages::Pipeline;
|
|
||||||
use reth_static_file::StaticFileProducer;
|
|
||||||
use reth_tasks::TaskExecutor;
|
|
||||||
use reth_transaction_pool::noop::NoopTransactionPool;
|
|
||||||
use std::{path::PathBuf, sync::Arc, time::Duration};
|
|
||||||
use tokio::sync::oneshot;
|
|
||||||
use tracing::*;
|
|
||||||
|
|
||||||
/// `reth debug replay-engine` command
|
|
||||||
/// This script will read stored engine API messages and replay them by the timestamp.
|
|
||||||
/// It does not require
|
|
||||||
#[derive(Debug, Parser)]
|
|
||||||
pub struct Command<C: ChainSpecParser> {
|
|
||||||
#[command(flatten)]
|
|
||||||
env: EnvironmentArgs<C>,
|
|
||||||
|
|
||||||
#[command(flatten)]
|
|
||||||
network: NetworkArgs,
|
|
||||||
|
|
||||||
/// The path to read engine API messages from.
|
|
||||||
#[arg(long = "engine-api-store", value_name = "PATH")]
|
|
||||||
engine_api_store: PathBuf,
|
|
||||||
|
|
||||||
/// The number of milliseconds between Engine API messages.
|
|
||||||
#[arg(long = "interval", default_value_t = 1_000)]
|
|
||||||
interval: u64,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<C: ChainSpecParser<ChainSpec = ChainSpec>> Command<C> {
|
|
||||||
async fn build_network<
|
|
||||||
N: ProviderNodeTypes<
|
|
||||||
ChainSpec = C::ChainSpec,
|
|
||||||
Primitives: NodePrimitives<
|
|
||||||
Block = reth_primitives::Block,
|
|
||||||
Receipt = reth_primitives::Receipt,
|
|
||||||
BlockHeader = reth_primitives::Header,
|
|
||||||
>,
|
|
||||||
>,
|
|
||||||
>(
|
|
||||||
&self,
|
|
||||||
config: &Config,
|
|
||||||
task_executor: TaskExecutor,
|
|
||||||
provider_factory: ProviderFactory<N>,
|
|
||||||
network_secret_path: PathBuf,
|
|
||||||
default_peers_path: PathBuf,
|
|
||||||
) -> eyre::Result<NetworkHandle> {
|
|
||||||
let secret_key = get_secret_key(&network_secret_path)?;
|
|
||||||
let network = self
|
|
||||||
.network
|
|
||||||
.network_config(config, provider_factory.chain_spec(), secret_key, default_peers_path)
|
|
||||||
.with_task_executor(Box::new(task_executor))
|
|
||||||
.build(provider_factory)
|
|
||||||
.start_network()
|
|
||||||
.await?;
|
|
||||||
info!(target: "reth::cli", peer_id = %network.peer_id(), local_addr = %network.local_addr(), "Connected to P2P network");
|
|
||||||
debug!(target: "reth::cli", peer_id = ?network.peer_id(), "Full peer ID");
|
|
||||||
Ok(network)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Execute `debug replay-engine` command
|
|
||||||
pub async fn execute<
|
|
||||||
N: CliNodeTypes<Engine = EthEngineTypes, Primitives = EthPrimitives, ChainSpec = C::ChainSpec>,
|
|
||||||
>(
|
|
||||||
self,
|
|
||||||
ctx: CliContext,
|
|
||||||
) -> eyre::Result<()> {
|
|
||||||
let Environment { provider_factory, config, data_dir } =
|
|
||||||
self.env.init::<N>(AccessRights::RW)?;
|
|
||||||
|
|
||||||
let consensus: Arc<dyn FullConsensus<Error = ConsensusError>> =
|
|
||||||
Arc::new(EthBeaconConsensus::new(provider_factory.chain_spec()));
|
|
||||||
|
|
||||||
let executor = EthExecutorProvider::ethereum(provider_factory.chain_spec());
|
|
||||||
|
|
||||||
// Configure blockchain tree
|
|
||||||
let tree_externals =
|
|
||||||
TreeExternals::new(provider_factory.clone(), Arc::clone(&consensus), executor);
|
|
||||||
let tree = BlockchainTree::new(tree_externals, BlockchainTreeConfig::default())?;
|
|
||||||
let blockchain_tree = Arc::new(ShareableBlockchainTree::new(tree));
|
|
||||||
|
|
||||||
// Set up the blockchain provider
|
|
||||||
let blockchain_db = BlockchainProvider::new(provider_factory.clone(), blockchain_tree)?;
|
|
||||||
|
|
||||||
// Set up network
|
|
||||||
let network_secret_path =
|
|
||||||
self.network.p2p_secret_key.clone().unwrap_or_else(|| data_dir.p2p_secret());
|
|
||||||
let network = self
|
|
||||||
.build_network(
|
|
||||||
&config,
|
|
||||||
ctx.task_executor.clone(),
|
|
||||||
provider_factory.clone(),
|
|
||||||
network_secret_path,
|
|
||||||
data_dir.known_peers(),
|
|
||||||
)
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
// Set up payload builder
|
|
||||||
let payload_builder = reth_ethereum_payload_builder::EthereumPayloadBuilder::new(
|
|
||||||
EthEvmConfig::new(provider_factory.chain_spec()),
|
|
||||||
EthereumBuilderConfig::new(Default::default()),
|
|
||||||
);
|
|
||||||
|
|
||||||
let payload_generator = BasicPayloadJobGenerator::with_builder(
|
|
||||||
blockchain_db.clone(),
|
|
||||||
NoopTransactionPool::default(),
|
|
||||||
ctx.task_executor.clone(),
|
|
||||||
BasicPayloadJobGeneratorConfig::default(),
|
|
||||||
payload_builder,
|
|
||||||
);
|
|
||||||
|
|
||||||
let (payload_service, payload_builder): (_, PayloadBuilderHandle<EthEngineTypes>) =
|
|
||||||
PayloadBuilderService::new(payload_generator, blockchain_db.canonical_state_stream());
|
|
||||||
|
|
||||||
ctx.task_executor.spawn_critical("payload builder service", payload_service);
|
|
||||||
|
|
||||||
// Configure the consensus engine
|
|
||||||
let network_client = network.fetch_client().await?;
|
|
||||||
let (beacon_consensus_engine, beacon_engine_handle) = BeaconConsensusEngine::new(
|
|
||||||
network_client,
|
|
||||||
Pipeline::<NodeTypesWithDBAdapter<N, Arc<DatabaseEnv>>>::builder().build(
|
|
||||||
provider_factory.clone(),
|
|
||||||
StaticFileProducer::new(provider_factory.clone(), PruneModes::none()),
|
|
||||||
),
|
|
||||||
blockchain_db.clone(),
|
|
||||||
Box::new(ctx.task_executor.clone()),
|
|
||||||
Box::new(network),
|
|
||||||
None,
|
|
||||||
payload_builder,
|
|
||||||
None,
|
|
||||||
u64::MAX,
|
|
||||||
EngineHooks::new(),
|
|
||||||
)?;
|
|
||||||
info!(target: "reth::cli", "Consensus engine initialized");
|
|
||||||
|
|
||||||
// Run consensus engine to completion
|
|
||||||
let (tx, rx) = oneshot::channel();
|
|
||||||
info!(target: "reth::cli", "Starting consensus engine");
|
|
||||||
ctx.task_executor.spawn_critical_blocking("consensus engine", async move {
|
|
||||||
let res = beacon_consensus_engine.await;
|
|
||||||
let _ = tx.send(res);
|
|
||||||
});
|
|
||||||
|
|
||||||
let engine_api_store = EngineMessageStore::new(self.engine_api_store.clone());
|
|
||||||
for filepath in engine_api_store.engine_messages_iter()? {
|
|
||||||
let contents =
|
|
||||||
fs::read(&filepath).wrap_err(format!("failed to read: {}", filepath.display()))?;
|
|
||||||
let message = serde_json::from_slice(&contents)
|
|
||||||
.wrap_err(format!("failed to parse: {}", filepath.display()))?;
|
|
||||||
debug!(target: "reth::cli", filepath = %filepath.display(), ?message, "Forwarding Engine API message");
|
|
||||||
match message {
|
|
||||||
StoredEngineApiMessage::ForkchoiceUpdated { state, payload_attrs } => {
|
|
||||||
let response = beacon_engine_handle
|
|
||||||
.fork_choice_updated(
|
|
||||||
state,
|
|
||||||
payload_attrs,
|
|
||||||
EngineApiMessageVersion::default(),
|
|
||||||
)
|
|
||||||
.await?;
|
|
||||||
debug!(target: "reth::cli", ?response, "Received for forkchoice updated");
|
|
||||||
}
|
|
||||||
StoredEngineApiMessage::NewPayload { payload, sidecar } => {
|
|
||||||
let response = beacon_engine_handle.new_payload(payload, sidecar).await?;
|
|
||||||
debug!(target: "reth::cli", ?response, "Received for new payload");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Pause before next message
|
|
||||||
tokio::time::sleep(Duration::from_millis(self.interval)).await;
|
|
||||||
}
|
|
||||||
|
|
||||||
info!(target: "reth::cli", "Finished replaying engine API messages");
|
|
||||||
|
|
||||||
match rx.await? {
|
|
||||||
Ok(()) => info!("Beacon consensus engine exited successfully"),
|
|
||||||
Err(error) => {
|
|
||||||
error!(target: "reth::cli", %error, "Beacon consensus engine exited with an error")
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -107,10 +107,6 @@ pub mod primitives {
|
|||||||
pub mod beacon_consensus {
|
pub mod beacon_consensus {
|
||||||
pub use reth_beacon_consensus::*;
|
pub use reth_beacon_consensus::*;
|
||||||
}
|
}
|
||||||
/// Re-exported from `reth_blockchain_tree`.
|
|
||||||
pub mod blockchain_tree {
|
|
||||||
pub use reth_blockchain_tree::*;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Re-exported from `reth_consensus`.
|
/// Re-exported from `reth_consensus`.
|
||||||
pub mod consensus {
|
pub mod consensus {
|
||||||
|
|||||||
@ -70,7 +70,6 @@
|
|||||||
- [`reth debug merkle`](./cli/reth/debug/merkle.md)
|
- [`reth debug merkle`](./cli/reth/debug/merkle.md)
|
||||||
- [`reth debug in-memory-merkle`](./cli/reth/debug/in-memory-merkle.md)
|
- [`reth debug in-memory-merkle`](./cli/reth/debug/in-memory-merkle.md)
|
||||||
- [`reth debug build-block`](./cli/reth/debug/build-block.md)
|
- [`reth debug build-block`](./cli/reth/debug/build-block.md)
|
||||||
- [`reth debug replay-engine`](./cli/reth/debug/replay-engine.md)
|
|
||||||
- [`reth recover`](./cli/reth/recover.md)
|
- [`reth recover`](./cli/reth/recover.md)
|
||||||
- [`reth recover storage-tries`](./cli/reth/recover/storage-tries.md)
|
- [`reth recover storage-tries`](./cli/reth/recover/storage-tries.md)
|
||||||
- [`reth prune`](./cli/reth/prune.md)
|
- [`reth prune`](./cli/reth/prune.md)
|
||||||
|
|||||||
1
book/cli/SUMMARY.md
vendored
1
book/cli/SUMMARY.md
vendored
@ -40,7 +40,6 @@
|
|||||||
- [`reth debug merkle`](./reth/debug/merkle.md)
|
- [`reth debug merkle`](./reth/debug/merkle.md)
|
||||||
- [`reth debug in-memory-merkle`](./reth/debug/in-memory-merkle.md)
|
- [`reth debug in-memory-merkle`](./reth/debug/in-memory-merkle.md)
|
||||||
- [`reth debug build-block`](./reth/debug/build-block.md)
|
- [`reth debug build-block`](./reth/debug/build-block.md)
|
||||||
- [`reth debug replay-engine`](./reth/debug/replay-engine.md)
|
|
||||||
- [`reth recover`](./reth/recover.md)
|
- [`reth recover`](./reth/recover.md)
|
||||||
- [`reth recover storage-tries`](./reth/recover/storage-tries.md)
|
- [`reth recover storage-tries`](./reth/recover/storage-tries.md)
|
||||||
- [`reth prune`](./reth/prune.md)
|
- [`reth prune`](./reth/prune.md)
|
||||||
|
|||||||
1
book/cli/reth/debug.md
vendored
1
book/cli/reth/debug.md
vendored
@ -13,7 +13,6 @@ Commands:
|
|||||||
merkle Debug the clean & incremental state root calculations
|
merkle Debug the clean & incremental state root calculations
|
||||||
in-memory-merkle Debug in-memory state root calculation
|
in-memory-merkle Debug in-memory state root calculation
|
||||||
build-block Debug block building
|
build-block Debug block building
|
||||||
replay-engine Debug engine API by replaying stored messages
|
|
||||||
help Print this message or the help of the given subcommand(s)
|
help Print this message or the help of the given subcommand(s)
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
|
|||||||
@ -18,7 +18,7 @@ use reth::{
|
|||||||
api::NodeTypesWithDBAdapter,
|
api::NodeTypesWithDBAdapter,
|
||||||
beacon_consensus::EthBeaconConsensus,
|
beacon_consensus::EthBeaconConsensus,
|
||||||
providers::{
|
providers::{
|
||||||
providers::{BlockchainProvider, StaticFileProvider},
|
providers::{BlockchainProvider2, StaticFileProvider},
|
||||||
ProviderFactory,
|
ProviderFactory,
|
||||||
},
|
},
|
||||||
rpc::eth::EthApi,
|
rpc::eth::EthApi,
|
||||||
@ -33,7 +33,7 @@ use reth::rpc::builder::{
|
|||||||
};
|
};
|
||||||
// Configuring the network parts, ideally also wouldn't need to think about this.
|
// Configuring the network parts, ideally also wouldn't need to think about this.
|
||||||
use myrpc_ext::{MyRpcExt, MyRpcExtApiServer};
|
use myrpc_ext::{MyRpcExt, MyRpcExtApiServer};
|
||||||
use reth::{blockchain_tree::noop::NoopBlockchainTree, tasks::TokioTaskExecutor};
|
use reth::tasks::TokioTaskExecutor;
|
||||||
use reth_node_ethereum::{
|
use reth_node_ethereum::{
|
||||||
node::EthereumEngineValidator, EthEvmConfig, EthExecutorProvider, EthereumNode,
|
node::EthereumEngineValidator, EthEvmConfig, EthExecutorProvider, EthereumNode,
|
||||||
};
|
};
|
||||||
@ -61,7 +61,7 @@ async fn main() -> eyre::Result<()> {
|
|||||||
// 2. Setup the blockchain provider using only the database provider and a noop for the tree to
|
// 2. Setup the blockchain provider using only the database provider and a noop for the tree to
|
||||||
// satisfy trait bounds. Tree is not used in this example since we are only operating on the
|
// satisfy trait bounds. Tree is not used in this example since we are only operating on the
|
||||||
// disk and don't handle new blocks/live sync etc, which is done by the blockchain tree.
|
// disk and don't handle new blocks/live sync etc, which is done by the blockchain tree.
|
||||||
let provider = BlockchainProvider::new(factory, Arc::new(NoopBlockchainTree::default()))?;
|
let provider = BlockchainProvider2::new(factory)?;
|
||||||
|
|
||||||
let rpc_builder = RpcModuleBuilder::default()
|
let rpc_builder = RpcModuleBuilder::default()
|
||||||
.with_provider(provider.clone())
|
.with_provider(provider.clone())
|
||||||
|
|||||||
Reference in New Issue
Block a user