refactor: move discv5 logic for op to reth-node-optimism (#8690)

This commit is contained in:
Qiwei Yang
2024-06-11 18:42:54 +08:00
committed by GitHub
parent 55317eb004
commit 3202c9072d
5 changed files with 42 additions and 24 deletions

1
Cargo.lock generated
View File

@@ -7459,6 +7459,7 @@ dependencies = [
"reth-basic-payload-builder",
"reth-beacon-consensus",
"reth-db",
"reth-discv5",
"reth-e2e-test-utils",
"reth-evm",
"reth-evm-optimism",

View File

@@ -158,7 +158,7 @@ impl NetworkArgs {
)
.peer_config(peers_config)
.boot_nodes(chain_bootnodes.clone())
.chain_spec(chain_spec.clone())
.chain_spec(chain_spec)
.transactions_manager_config(transactions_manager_config)
// Configure node identity
.apply(|builder| {
@@ -172,13 +172,7 @@ impl NetworkArgs {
// apply discovery settings
.apply(|builder| {
let rlpx_socket = (self.addr, self.port).into();
let mut builder = self.discovery.apply_to_builder(builder, rlpx_socket);
if chain_spec.is_optimism() && !self.discovery.disable_discovery {
builder = builder.discovery_v5(reth_discv5::Config::builder(rlpx_socket));
}
builder
self.discovery.apply_to_builder(builder, rlpx_socket)
})
// modify discv5 settings if enabled in previous step
.map_discv5_config_builder(|builder| {

View File

@@ -20,7 +20,9 @@ use reth_db_api::{
database_metrics::{DatabaseMetadata, DatabaseMetrics},
};
use reth_exex::ExExContext;
use reth_network::{NetworkBuilder, NetworkConfig, NetworkHandle, NetworkManager};
use reth_network::{
NetworkBuilder, NetworkConfig, NetworkConfigBuilder, NetworkHandle, NetworkManager,
};
use reth_node_api::{FullNodeTypes, FullNodeTypesAdapter, NodeTypes};
use reth_node_core::{
args::{get_secret_key, DatadirArgs},
@@ -38,7 +40,6 @@ use secp256k1::SecretKey;
pub use states::*;
use std::{
net::{IpAddr, SocketAddr, SocketAddrV4, SocketAddrV6},
path::PathBuf,
sync::Arc,
};
@@ -515,9 +516,20 @@ impl<Node: FullNodeTypes> BuilderContext<Node> {
/// Returns the default network config for the node.
pub fn network_config(&self) -> eyre::Result<NetworkConfig<Node::Provider>> {
let network_builder = self.network_config_builder();
Ok(self.build_network_config(network_builder?))
}
/// Get the [`NetworkConfigBuilder`].
pub fn network_config_builder(&self) -> eyre::Result<NetworkConfigBuilder> {
let secret_key = self.network_secret(&self.config().datadir())?;
let default_peers_path = self.config().datadir().known_peers();
Ok(self.build_network_config(secret_key, default_peers_path))
Ok(self.config().network.network_config(
self.reth_config(),
self.config().chain.clone(),
secret_key,
default_peers_path,
))
}
/// Get the network secret from the given data dir
@@ -529,19 +541,11 @@ impl<Node: FullNodeTypes> BuilderContext<Node> {
}
/// Builds the [`NetworkConfig`].
fn build_network_config(
pub fn build_network_config(
&self,
secret_key: SecretKey,
default_peers_path: PathBuf,
network_builder: NetworkConfigBuilder,
) -> NetworkConfig<Node::Provider> {
self.config()
.network
.network_config(
self.reth_config(),
self.config().chain.clone(),
secret_key,
default_peers_path,
)
network_builder
.with_task_executor(Box::new(self.executor.clone()))
.set_head(self.head)
.listener_addr(SocketAddr::new(
@@ -549,7 +553,6 @@ impl<Node: FullNodeTypes> BuilderContext<Node> {
// set discovery port based on instance number
self.config().network.port + self.config().instance - 1,
))
.disable_discv4_discovery_if(self.config().chain.chain.is_optimism())
.discovery_addr(SocketAddr::new(
self.config().network.discovery.addr,
// set discovery port based on instance number

View File

@@ -30,6 +30,7 @@ reth-revm.workspace = true
reth-evm-optimism.workspace = true
reth-beacon-consensus.workspace = true
revm-primitives.workspace = true
reth-discv5.workspace = true
# async
async-trait.workspace = true

View File

@@ -269,7 +269,26 @@ where
pool: Pool,
) -> eyre::Result<NetworkHandle> {
let Self { disable_txpool_gossip } = self;
let mut network_config = ctx.network_config()?;
let args = &ctx.config().network;
let network_builder = ctx
.network_config_builder()?
// purposefully disable discv4
.disable_discv4_discovery()
// apply discovery settings
.apply(|builder| {
let rlpx_socket = (args.addr, args.port).into();
let mut builder = args.discovery.apply_to_builder(builder, rlpx_socket);
if !args.discovery.disable_discovery {
builder = builder.discovery_v5(reth_discv5::Config::builder(rlpx_socket));
}
builder
});
let mut network_config = ctx.build_network_config(network_builder);
// When `sequencer_endpoint` is configured, the node will forward all transactions to a
// Sequencer node for execution and inclusion on L1, and disable its own txpool