diff --git a/Cargo.lock b/Cargo.lock index b6f3715e2..addac7812 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6265,6 +6265,7 @@ dependencies = [ "reth-discv4", "reth-discv5", "reth-downloaders", + "reth-engine-util", "reth-errors", "reth-ethereum-payload-builder", "reth-evm", @@ -6289,6 +6290,7 @@ dependencies = [ "reth-primitives", "reth-provider", "reth-prune", + "reth-prune-types", "reth-revm", "reth-rpc", "reth-rpc-api", @@ -6904,6 +6906,24 @@ dependencies = [ "serde", ] +[[package]] +name = "reth-engine-util" +version = "1.0.0" +dependencies = [ + "eyre", + "futures", + "pin-project", + "reth-beacon-consensus", + "reth-engine-primitives", + "reth-fs-util", + "reth-rpc", + "reth-rpc-types", + "serde", + "serde_json", + "tokio-util", + "tracing", +] + [[package]] name = "reth-errors" version = "1.0.0" @@ -7447,6 +7467,7 @@ dependencies = [ "reth-db-api", "reth-db-common", "reth-downloaders", + "reth-engine-util", "reth-evm", "reth-exex", "reth-network", @@ -7494,7 +7515,6 @@ dependencies = [ "metrics-process", "metrics-util", "once_cell", - "pin-project", "procfs", "proptest", "rand 0.8.5", @@ -7506,7 +7526,6 @@ dependencies = [ "reth-db-api", "reth-discv4", "reth-discv5", - "reth-engine-primitives", "reth-fs-util", "reth-metrics", "reth-net-nat", @@ -7527,13 +7546,11 @@ dependencies = [ "reth-tracing", "reth-transaction-pool", "secp256k1", - "serde", "serde_json", "shellexpand", "thiserror", "tikv-jemalloc-ctl", "tokio", - "tokio-util", "tower", "tracing", "vergen", diff --git a/Cargo.toml b/Cargo.toml index e0b2cf90b..3f90af12f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,7 @@ members = [ "crates/ethereum-forks/", "crates/e2e-test-utils/", "crates/engine-primitives/", + "crates/engine/util/", "crates/errors/", "crates/ethereum-forks/", "crates/ethereum/consensus/", @@ -279,6 +280,7 @@ reth-downloaders = { path = "crates/net/downloaders" } reth-e2e-test-utils = { path = "crates/e2e-test-utils" } reth-ecies = { path = "crates/net/ecies" } reth-engine-primitives = { path = "crates/engine-primitives" } +reth-engine-util = { path = "crates/engine/util" } reth-errors = { path = "crates/errors" } reth-eth-wire = { path = "crates/net/eth-wire" } reth-eth-wire-types = { path = "crates/net/eth-wire-types" } diff --git a/bin/reth/Cargo.toml b/bin/reth/Cargo.toml index 69deb9c7b..88506f563 100644 --- a/bin/reth/Cargo.toml +++ b/bin/reth/Cargo.toml @@ -66,6 +66,8 @@ reth-node-builder.workspace = true reth-node-events.workspace = true reth-consensus.workspace = true reth-optimism-primitives.workspace = true +reth-prune-types.workspace = true +reth-engine-util.workspace = true reth-prune.workspace = true # crypto diff --git a/bin/reth/src/commands/debug_cmd/replay_engine.rs b/bin/reth/src/commands/debug_cmd/replay_engine.rs index 7b8e7167e..171b828bb 100644 --- a/bin/reth/src/commands/debug_cmd/replay_engine.rs +++ b/bin/reth/src/commands/debug_cmd/replay_engine.rs @@ -14,10 +14,10 @@ use reth_cli_runner::CliContext; use reth_config::Config; use reth_consensus::Consensus; use reth_db::DatabaseEnv; +use reth_engine_util::engine_store::{EngineMessageStore, StoredEngineApiMessage}; use reth_fs_util as fs; use reth_network::NetworkHandle; use reth_network_api::NetworkInfo; -use reth_node_core::engine::engine_store::{EngineMessageStore, StoredEngineApiMessage}; use reth_payload_builder::{PayloadBuilderHandle, PayloadBuilderService}; use reth_provider::{ providers::BlockchainProvider, CanonStateSubscriptions, ChainSpecProvider, ProviderFactory, diff --git a/crates/engine/util/Cargo.toml b/crates/engine/util/Cargo.toml new file mode 100644 index 000000000..26d504a74 --- /dev/null +++ b/crates/engine/util/Cargo.toml @@ -0,0 +1,42 @@ +[package] +name = "reth-engine-util" +version.workspace = true +edition.workspace = true +rust-version.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true + +[lints] +workspace = true + +[dependencies] +# reth +reth-fs-util.workspace = true +reth-rpc.workspace = true +reth-rpc-types.workspace = true +reth-engine-primitives.workspace = true +reth-beacon-consensus.workspace = true + +# async +tokio-util.workspace = true +pin-project.workspace = true + +# misc +eyre.workspace = true + +# io +serde.workspace = true +serde_json.workspace = true + +# tracing +tracing.workspace = true + +# async +futures.workspace = true + +[features] +optimism = [ + "reth-rpc/optimism", + "reth-beacon-consensus/optimism", +] diff --git a/crates/node-core/src/engine/engine_store.rs b/crates/engine/util/src/engine_store.rs similarity index 100% rename from crates/node-core/src/engine/engine_store.rs rename to crates/engine/util/src/engine_store.rs diff --git a/crates/node-core/src/engine/mod.rs b/crates/engine/util/src/lib.rs similarity index 100% rename from crates/node-core/src/engine/mod.rs rename to crates/engine/util/src/lib.rs diff --git a/crates/node-core/src/engine/skip_fcu.rs b/crates/engine/util/src/skip_fcu.rs similarity index 100% rename from crates/node-core/src/engine/skip_fcu.rs rename to crates/engine/util/src/skip_fcu.rs diff --git a/crates/node-core/src/engine/skip_new_payload.rs b/crates/engine/util/src/skip_new_payload.rs similarity index 100% rename from crates/node-core/src/engine/skip_new_payload.rs rename to crates/engine/util/src/skip_new_payload.rs diff --git a/crates/node-core/Cargo.toml b/crates/node-core/Cargo.toml index d9cae558b..82e5c4dfc 100644 --- a/crates/node-core/Cargo.toml +++ b/crates/node-core/Cargo.toml @@ -33,7 +33,6 @@ reth-discv4.workspace = true reth-discv5.workspace = true reth-net-nat.workspace = true reth-network-peers.workspace = true -reth-engine-primitives.workspace = true reth-tasks.workspace = true reth-consensus-common.workspace = true reth-beacon-consensus.workspace = true @@ -46,8 +45,6 @@ alloy-rpc-types-engine.workspace = true # async tokio.workspace = true -tokio-util.workspace = true -pin-project.workspace = true # metrics reth-metrics.workspace = true @@ -69,7 +66,6 @@ once_cell.workspace = true # io dirs-next = "2.0.0" shellexpand = "3.0.0" -serde.workspace = true serde_json.workspace = true # http/rpc diff --git a/crates/node-core/src/lib.rs b/crates/node-core/src/lib.rs index a8761110a..5894da8ee 100644 --- a/crates/node-core/src/lib.rs +++ b/crates/node-core/src/lib.rs @@ -11,7 +11,6 @@ pub mod args; pub mod cli; pub mod dirs; -pub mod engine; pub mod exit; pub mod metrics; pub mod node_config; diff --git a/crates/node/builder/Cargo.toml b/crates/node/builder/Cargo.toml index 87746ff13..fc13a8621 100644 --- a/crates/node/builder/Cargo.toml +++ b/crates/node/builder/Cargo.toml @@ -45,6 +45,7 @@ reth-node-events.workspace = true reth-consensus.workspace = true reth-consensus-debug-client.workspace = true reth-rpc-types.workspace = true +reth-engine-util.workspace = true ## async futures.workspace = true diff --git a/crates/node/builder/src/launch/mod.rs b/crates/node/builder/src/launch/mod.rs index 9795cead4..532e87fec 100644 --- a/crates/node/builder/src/launch/mod.rs +++ b/crates/node/builder/src/launch/mod.rs @@ -13,17 +13,16 @@ use reth_beacon_consensus::{ BeaconConsensusEngine, }; use reth_consensus_debug_client::{DebugConsensusClient, EtherscanBlockProvider, RpcBlockProvider}; +use reth_engine_util::EngineMessageStreamExt; use reth_exex::ExExManagerHandle; use reth_network::NetworkEvents; use reth_node_api::FullNodeTypes; use reth_node_core::{ dirs::{ChainPath, DataDirPath}, - engine::EngineMessageStreamExt, exit::NodeExitFuture, version::{CARGO_PKG_VERSION, CLIENT_CODE, NAME_CLIENT, VERGEN_GIT_SHA}, }; use reth_node_events::{cl::ConsensusLayerHealthEvents, node}; - use reth_primitives::format_ether; use reth_provider::providers::BlockchainProvider; use reth_rpc_engine_api::EngineApi;