refactor: clean-up discv5 configuration (#9143)

This commit is contained in:
Arsenii Kulikov
2024-06-27 19:25:24 +04:00
committed by GitHub
parent 6d8cbae3e6
commit 5aaf91dbcb
13 changed files with 120 additions and 199 deletions

View File

@ -34,7 +34,7 @@ use reth_stages::{
};
use reth_static_file::StaticFileProducer;
use reth_tasks::TaskExecutor;
use std::{net::SocketAddr, path::PathBuf, sync::Arc};
use std::{path::PathBuf, sync::Arc};
use tokio::sync::watch;
use tracing::*;
@ -130,11 +130,6 @@ impl Command {
.network
.network_config(config, provider_factory.chain_spec(), secret_key, default_peers_path)
.with_task_executor(Box::new(task_executor))
.listener_addr(SocketAddr::new(self.network.addr, self.network.port))
.discovery_addr(SocketAddr::new(
self.network.discovery.addr,
self.network.discovery.port,
))
.build(provider_factory)
.start_network()
.await?;

View File

@ -26,7 +26,7 @@ use reth_revm::database::StateProviderDatabase;
use reth_stages::StageId;
use reth_tasks::TaskExecutor;
use reth_trie::{updates::TrieKey, StateRoot};
use std::{net::SocketAddr, path::PathBuf, sync::Arc};
use std::{path::PathBuf, sync::Arc};
use tracing::*;
/// `reth debug in-memory-merkle` command
@ -64,11 +64,6 @@ impl Command {
.network
.network_config(config, provider_factory.chain_spec(), secret_key, default_peers_path)
.with_task_executor(Box::new(task_executor))
.listener_addr(SocketAddr::new(self.network.addr, self.network.port))
.discovery_addr(SocketAddr::new(
self.network.discovery.addr,
self.network.discovery.port,
))
.build(provider_factory)
.start_network()
.await?;

View File

@ -30,7 +30,7 @@ use reth_stages::{
ExecInput, Stage, StageCheckpoint,
};
use reth_tasks::TaskExecutor;
use std::{net::SocketAddr, path::PathBuf, sync::Arc};
use std::{path::PathBuf, sync::Arc};
use tracing::*;
/// `reth debug merkle` command
@ -69,11 +69,6 @@ impl Command {
.network
.network_config(config, provider_factory.chain_spec(), secret_key, default_peers_path)
.with_task_executor(Box::new(task_executor))
.listener_addr(SocketAddr::new(self.network.addr, self.network.port))
.discovery_addr(SocketAddr::new(
self.network.discovery.addr,
self.network.discovery.port,
))
.build(provider_factory)
.start_network()
.await?;

View File

@ -27,7 +27,7 @@ use reth_stages::Pipeline;
use reth_static_file::StaticFileProducer;
use reth_tasks::TaskExecutor;
use reth_transaction_pool::noop::NoopTransactionPool;
use std::{net::SocketAddr, path::PathBuf, sync::Arc, time::Duration};
use std::{path::PathBuf, sync::Arc, time::Duration};
use tokio::sync::oneshot;
use tracing::*;
@ -65,11 +65,6 @@ impl Command {
.network
.network_config(config, provider_factory.chain_spec(), secret_key, default_peers_path)
.with_task_executor(Box::new(task_executor))
.listener_addr(SocketAddr::new(self.network.addr, self.network.port))
.discovery_addr(SocketAddr::new(
self.network.discovery.addr,
self.network.discovery.port,
))
.build(provider_factory)
.start_network()
.await?;

View File

@ -4,13 +4,12 @@ use crate::{
args::{
get_secret_key,
utils::{chain_help, chain_value_parser, hash_or_num_value_parser, SUPPORTED_CHAINS},
DatabaseArgs, DiscoveryArgs, NetworkArgs,
DatabaseArgs, NetworkArgs,
},
utils::get_single_header,
};
use backon::{ConstantBuilder, Retryable};
use clap::{Parser, Subcommand};
use discv5::ListenConfig;
use reth_chainspec::ChainSpec;
use reth_config::Config;
use reth_db::create_db;
@ -19,11 +18,7 @@ use reth_network_p2p::bodies::client::BodiesClient;
use reth_node_core::args::DatadirArgs;
use reth_primitives::BlockHashOrNumber;
use reth_provider::{providers::StaticFileProvider, ProviderFactory};
use std::{
net::{IpAddr, SocketAddrV4, SocketAddrV6},
path::PathBuf,
sync::Arc,
};
use std::{path::PathBuf, sync::Arc};
/// `reth p2p` command
#[derive(Debug, Parser)]
@ -113,47 +108,7 @@ impl Command {
.disable_discv4_discovery_if(self.chain.chain.is_optimism())
.boot_nodes(boot_nodes.clone())
.apply(|builder| {
self.network
.discovery
.apply_to_builder(builder, rlpx_socket)
.map_discv5_config_builder(|builder| {
let DiscoveryArgs {
discv5_addr,
discv5_addr_ipv6,
discv5_port,
discv5_port_ipv6,
discv5_lookup_interval,
discv5_bootstrap_lookup_interval,
discv5_bootstrap_lookup_countdown,
..
} = self.network.discovery;
// Use rlpx address if none given
let discv5_addr_ipv4 = discv5_addr.or(match self.network.addr {
IpAddr::V4(ip) => Some(ip),
IpAddr::V6(_) => None,
});
let discv5_addr_ipv6 = discv5_addr_ipv6.or(match self.network.addr {
IpAddr::V4(_) => None,
IpAddr::V6(ip) => Some(ip),
});
builder
.discv5_config(
discv5::ConfigBuilder::new(ListenConfig::from_two_sockets(
discv5_addr_ipv4
.map(|addr| SocketAddrV4::new(addr, discv5_port)),
discv5_addr_ipv6.map(|addr| {
SocketAddrV6::new(addr, discv5_port_ipv6, 0, 0)
}),
))
.build(),
)
.add_unsigned_boot_nodes(boot_nodes.into_iter())
.lookup_interval(discv5_lookup_interval)
.bootstrap_lookup_interval(discv5_bootstrap_lookup_interval)
.bootstrap_lookup_countdown(discv5_bootstrap_lookup_countdown)
})
self.network.discovery.apply_to_builder(builder, rlpx_socket, boot_nodes)
})
.build(Arc::new(ProviderFactory::new(
noop_db,