mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
feat: make downloaders and clients generic over block parts (#12469)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
This commit is contained in:
@ -19,6 +19,7 @@ reth-ethereum-cli.workspace = true
|
||||
reth-chainspec.workspace = true
|
||||
reth-config.workspace = true
|
||||
reth-primitives.workspace = true
|
||||
reth-primitives-traits.workspace = true
|
||||
reth-fs-util.workspace = true
|
||||
reth-db = { workspace = true, features = ["mdbx"] }
|
||||
reth-db-api.workspace = true
|
||||
|
||||
@ -21,7 +21,7 @@ use reth_downloaders::{
|
||||
use reth_exex::ExExManagerHandle;
|
||||
use reth_network::{BlockDownloaderProvider, NetworkEventListenerProvider, NetworkHandle};
|
||||
use reth_network_api::NetworkInfo;
|
||||
use reth_network_p2p::{headers::client::HeadersClient, BlockClient};
|
||||
use reth_network_p2p::{headers::client::HeadersClient, EthBlockClient};
|
||||
use reth_node_api::{NodeTypesWithDB, NodeTypesWithDBAdapter, NodeTypesWithEngine};
|
||||
use reth_node_ethereum::EthExecutorProvider;
|
||||
use reth_provider::{
|
||||
@ -68,7 +68,7 @@ impl<C: ChainSpecParser<ChainSpec = ChainSpec>> Command<C> {
|
||||
static_file_producer: StaticFileProducer<ProviderFactory<N>>,
|
||||
) -> eyre::Result<Pipeline<N>>
|
||||
where
|
||||
Client: BlockClient + 'static,
|
||||
Client: EthBlockClient + 'static,
|
||||
{
|
||||
// building network downloaders using the fetch client
|
||||
let header_downloader = ReverseHeadersDownloaderBuilder::new(config.stages.headers)
|
||||
@ -137,11 +137,14 @@ impl<C: ChainSpecParser<ChainSpec = ChainSpec>> Command<C> {
|
||||
Ok(network)
|
||||
}
|
||||
|
||||
async fn fetch_block_hash<Client: HeadersClient>(
|
||||
async fn fetch_block_hash<Client>(
|
||||
&self,
|
||||
client: Client,
|
||||
block: BlockNumber,
|
||||
) -> eyre::Result<B256> {
|
||||
) -> eyre::Result<B256>
|
||||
where
|
||||
Client: HeadersClient<Header: reth_primitives_traits::BlockHeader>,
|
||||
{
|
||||
info!(target: "reth::cli", ?block, "Fetching block from the network.");
|
||||
loop {
|
||||
match get_single_header(&client, BlockHashOrNumber::Number(block)).await {
|
||||
|
||||
@ -7,6 +7,7 @@ use crate::{
|
||||
use alloy_eips::BlockHashOrNumber;
|
||||
use backon::{ConstantBuilder, Retryable};
|
||||
use clap::Parser;
|
||||
use reth_beacon_consensus::EthBeaconConsensus;
|
||||
use reth_chainspec::ChainSpec;
|
||||
use reth_cli::chainspec::ChainSpecParser;
|
||||
use reth_cli_commands::common::{AccessRights, Environment, EnvironmentArgs};
|
||||
@ -124,7 +125,8 @@ impl<C: ChainSpecParser<ChainSpec = ChainSpec>> Command<C> {
|
||||
|
||||
let client = fetch_client.clone();
|
||||
let chain = provider_factory.chain_spec();
|
||||
let block = (move || get_single_body(client.clone(), Arc::clone(&chain), header.clone()))
|
||||
let consensus = Arc::new(EthBeaconConsensus::new(chain.clone()));
|
||||
let block = (move || get_single_body(client.clone(), header.clone(), consensus.clone()))
|
||||
.retry(backoff)
|
||||
.notify(
|
||||
|err, _| warn!(target: "reth::cli", "Error requesting body: {err}. Retrying..."),
|
||||
|
||||
Reference in New Issue
Block a user