Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into joshie/dyn-forks
Browse files Browse the repository at this point in the history
  • Loading branch information
joshieDo committed Jun 27, 2024
2 parents b327d74 + c23fe39 commit 7c061df
Show file tree
Hide file tree
Showing 23 changed files with 153 additions and 321 deletions.
2 changes: 1 addition & 1 deletion CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ crates/primitives/ @DaniPopes @Rjected
crates/primitives-traits/ @DaniPopes @Rjected @joshieDo
crates/prune/ @shekhirin @joshieDo
crates/revm/ @mattsse @rakita
crates/rpc/ @mattsse @Rjected
crates/rpc/ @mattsse @Rjected @emhane
crates/stages/ @onbjerg @rkrasiuk @shekhirin
crates/static-file/ @joshieDo @shekhirin
crates/storage/codecs/ @joshieDo
Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 1 addition & 6 deletions bin/reth/src/commands/debug_cmd/execution.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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::*;

Expand Down Expand Up @@ -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?;
Expand Down
7 changes: 1 addition & 6 deletions bin/reth/src/commands/debug_cmd/in_memory_merkle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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?;
Expand Down
7 changes: 1 addition & 6 deletions bin/reth/src/commands/debug_cmd/merkle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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?;
Expand Down
7 changes: 1 addition & 6 deletions bin/reth/src/commands/debug_cmd/replay_engine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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::*;

Expand Down Expand Up @@ -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?;
Expand Down
51 changes: 3 additions & 48 deletions bin/reth/src/commands/p2p/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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)]
Expand Down Expand Up @@ -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,
Expand Down
3 changes: 3 additions & 0 deletions crates/cli/cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,8 @@ repository.workspace = true


[dependencies]
# reth
reth-cli-runner.workspace = true

# misc
clap.workspace = true
23 changes: 23 additions & 0 deletions crates/cli/cli/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

use std::{borrow::Cow, ffi::OsString};

use reth_cli_runner::CliRunner;

use clap::{Error, Parser};

/// Reth based node cli.
Expand Down Expand Up @@ -42,4 +44,25 @@ pub trait RethCli: Sized {
{
<Self as Parser>::try_parse_from(itr)
}

/// Executes a command.
fn with_runner<F, R>(self, f: F) -> R
where
F: FnOnce(Self, CliRunner) -> R,
{
let runner = CliRunner::default();

f(self, runner)
}

/// Parses and executes a command.
fn execute<F, R>(f: F) -> Result<R, Error>
where
Self: Parser + Sized,
F: FnOnce(Self, CliRunner) -> R,
{
let cli = Self::parse_args()?;

Ok(cli.with_runner(f))
}
}
14 changes: 0 additions & 14 deletions crates/evm/src/provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,20 +52,6 @@ pub trait EvmEnvProvider: Send + Sync {
where
EvmConfig: ConfigureEvmEnv;

/// Fills the [BlockEnv] fields with values specific to the given [BlockHashOrNumber].
fn fill_block_env_at(
&self,
block_env: &mut BlockEnv,
at: BlockHashOrNumber,
) -> ProviderResult<()>;

/// Fills the [BlockEnv] fields with values specific to the given [Header].
fn fill_block_env_with_header(
&self,
block_env: &mut BlockEnv,
header: &Header,
) -> ProviderResult<()>;

/// Fills the [`CfgEnvWithHandlerCfg`] fields with values specific to the given
/// [BlockHashOrNumber].
fn fill_cfg_env_at<EvmConfig>(
Expand Down
41 changes: 10 additions & 31 deletions crates/net/network/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -410,36 +410,6 @@ impl NetworkConfigBuilder {
}
}

/// Calls a closure on [`reth_discv5::ConfigBuilder`], if discv5 discovery is enabled and the
/// builder has been set.
/// ```
/// use reth_chainspec::MAINNET;
/// use reth_network::NetworkConfigBuilder;
/// use reth_provider::test_utils::NoopProvider;
/// use secp256k1::{rand::thread_rng, SecretKey};
///
/// let sk = SecretKey::new(&mut thread_rng());
/// let fork_id = MAINNET.latest_fork_id();
/// let network_config = NetworkConfigBuilder::new(sk)
/// .map_discv5_config_builder(|builder| builder.fork(b"eth", fork_id))
/// .build(NoopProvider::default());
/// ```
pub fn map_discv5_config_builder(
mut self,
f: impl FnOnce(reth_discv5::ConfigBuilder) -> reth_discv5::ConfigBuilder,
) -> Self {
if let Some(mut builder) = self.discovery_v5_builder {
if let Some(network_stack_id) = NetworkStackId::id(&self.chain_spec) {
let fork_id = self.chain_spec.latest_fork_id();
builder = builder.fork(network_stack_id, fork_id);
}

self.discovery_v5_builder = Some(f(builder));
}

self
}

/// Adds a new additional protocol to the `RLPx` sub-protocol list.
pub fn add_rlpx_sub_protocol(mut self, protocol: impl IntoRlpxSubProtocol) -> Self {
self.extra_protocols.push(protocol);
Expand Down Expand Up @@ -479,7 +449,7 @@ impl NetworkConfigBuilder {
secret_key,
mut dns_discovery_config,
discovery_v4_builder,
discovery_v5_builder,
mut discovery_v5_builder,
boot_nodes,
discovery_addr,
listener_addr,
Expand All @@ -496,6 +466,15 @@ impl NetworkConfigBuilder {
transactions_manager_config,
} = self;

discovery_v5_builder = discovery_v5_builder.map(|mut builder| {
if let Some(network_stack_id) = NetworkStackId::id(&chain_spec) {
let fork_id = chain_spec.latest_fork_id();
builder = builder.fork(network_stack_id, fork_id)
}

builder
});

let listener_addr = listener_addr.unwrap_or(DEFAULT_DISCOVERY_ADDRESS);

let mut hello_message =
Expand Down
Loading

0 comments on commit 7c061df

Please sign in to comment.