fix: add discv5 config to p2p cmd (#7662)

This commit is contained in:
joshieDo
2024-04-17 15:46:36 +01:00
committed by GitHub
parent 4f8d90b104
commit db4a4a34e4
4 changed files with 33 additions and 12 deletions

1
Cargo.lock generated
View File

@ -6073,6 +6073,7 @@ dependencies = [
"comfy-table",
"confy",
"crossterm",
"discv5",
"eyre",
"fdlimit",
"futures",

View File

@ -94,6 +94,9 @@ rayon.workspace = true
boyer-moore-magiclen = "0.2.16"
ahash = "0.8"
# p2p
discv5.workspace = true
[target.'cfg(unix)'.dependencies]
tikv-jemallocator = { version = "0.5.0", optional = true }
libc = "0.2"

View File

@ -11,13 +11,14 @@ use crate::{
};
use backon::{ConstantBuilder, Retryable};
use clap::{Parser, Subcommand};
use discv5::ListenConfig;
use reth_config::Config;
use reth_db::create_db;
use reth_discv4::NatResolver;
use reth_interfaces::p2p::bodies::client::BodiesClient;
use reth_primitives::{BlockHashOrNumber, ChainSpec, NodeRecord};
use reth_provider::ProviderFactory;
use std::{path::PathBuf, sync::Arc};
use std::{net::SocketAddr, path::PathBuf, sync::Arc};
/// `reth p2p` command
#[derive(Debug, Parser)]
@ -122,20 +123,35 @@ impl Command {
let secret_key_path = self.p2p_secret_key.clone().unwrap_or(default_secret_key_path);
let p2p_secret_key = get_secret_key(&secret_key_path)?;
let mut network_config_builder =
config.network_config(self.nat, None, p2p_secret_key).chain_spec(self.chain.clone());
let mut network_config_builder = config
.network_config(self.nat, None, p2p_secret_key)
.chain_spec(self.chain.clone())
.boot_nodes(self.chain.bootnodes().unwrap_or_default());
network_config_builder = self.discovery.apply_to_builder(network_config_builder);
let network = network_config_builder
.build(Arc::new(ProviderFactory::new(
noop_db,
self.chain.clone(),
data_dir.static_files_path(),
)?))
.start_network()
.await?;
let mut network_config = network_config_builder.build(Arc::new(ProviderFactory::new(
noop_db,
self.chain.clone(),
data_dir.static_files_path(),
)?));
if self.discovery.enable_discv5_discovery {
network_config = network_config.discovery_v5_with_config_builder(|builder| {
let DiscoveryArgs { discv5_addr, discv5_port, .. } = self.discovery;
builder
.discv5_config(
discv5::ConfigBuilder::new(ListenConfig::from(Into::<SocketAddr>::into((
discv5_addr,
discv5_port,
))))
.build(),
)
.build()
});
}
let network = network_config.start_network().await?;
let fetch_client = network.fetch_client().await?;
let retries = self.retries.max(1);
let backoff = ConstantBuilder::default().with_max_times(retries);

View File

@ -252,6 +252,7 @@ impl DiscoveryArgs {
}
if !self.disable_discovery && (self.enable_discv5_discovery || cfg!(feature = "optimism")) {
network_config_builder = network_config_builder.disable_discv4_discovery();
network_config_builder = network_config_builder.enable_discv5_discovery();
}
@ -271,7 +272,7 @@ impl Default for DiscoveryArgs {
Self {
disable_discovery: false,
disable_dns_discovery: false,
disable_discv4_discovery: false,
disable_discv4_discovery: cfg!(feature = "optimism"),
enable_discv5_discovery: cfg!(feature = "optimism"),
addr: DEFAULT_DISCOVERY_ADDR,
port: DEFAULT_DISCOVERY_PORT,