chore: add helper trait for BlockReader tied to NetworkPrimitives (#13449)

This commit is contained in:
Dan Cline
2024-12-19 12:46:40 +02:00
committed by GitHub
parent 7250ca5d77
commit b26e9e0d1c
2 changed files with 31 additions and 8 deletions

View File

@ -7,7 +7,7 @@ use crate::{
components::NodeComponentsBuilder,
node::FullNode,
rpc::{RethRpcAddOns, RethRpcServerHandles, RpcContext},
DefaultNodeLauncher, LaunchNode, Node, NodeHandle,
BlockReaderFor, DefaultNodeLauncher, LaunchNode, Node, NodeHandle,
};
use alloy_eips::eip4844::env_settings::EnvKzgSettings;
use futures::Future;
@ -35,7 +35,7 @@ use reth_node_core::{
};
use reth_provider::{
providers::{BlockchainProvider, NodeTypesForProvider},
BlockReader, ChainSpecProvider, FullProvider,
ChainSpecProvider, FullProvider,
};
use reth_tasks::TaskExecutor;
use reth_transaction_pool::{PoolConfig, PoolTransaction, TransactionPool};
@ -658,8 +658,7 @@ impl<Node: FullNodeTypes> BuilderContext<Node> {
>,
> + Unpin
+ 'static,
Node::Provider:
BlockReader<Receipt = N::Receipt, Block = N::Block, Header = N::BlockHeader>,
Node::Provider: BlockReaderFor<N>,
{
self.start_network_with(builder, pool, Default::default())
}
@ -685,8 +684,7 @@ impl<Node: FullNodeTypes> BuilderContext<Node> {
>,
> + Unpin
+ 'static,
Node::Provider:
BlockReader<Receipt = N::Receipt, Block = N::Block, Header = N::BlockHeader>,
Node::Provider: BlockReaderFor<N>,
{
let (handle, network, txpool, eth) = builder
.transactions(pool, tx_config)

View File

@ -7,13 +7,14 @@ use std::{
sync::Arc,
};
use reth_node_api::{EngineTypes, FullNodeComponents};
use reth_network::NetworkPrimitives;
use reth_node_api::{BlockBody, EngineTypes, FullNodeComponents};
use reth_node_core::{
dirs::{ChainPath, DataDirPath},
node_config::NodeConfig,
};
use reth_payload_builder::PayloadBuilderHandle;
use reth_provider::ChainSpecProvider;
use reth_provider::{BlockReader, ChainSpecProvider};
use reth_rpc_api::EngineApiClient;
use reth_rpc_builder::{auth::AuthServerHandle, RpcServerHandle};
use reth_tasks::TaskExecutor;
@ -210,3 +211,27 @@ impl<Node: FullNodeComponents, AddOns: NodeAddOns<Node>> DerefMut for FullNode<N
&mut self.add_ons_handle
}
}
/// This is a type alias to make type bounds simpler, when we have a [`NetworkPrimitives`] and need
/// a [`BlockReader`] whose associated types match the [`NetworkPrimitives`] associated types.
pub trait BlockReaderFor<N: NetworkPrimitives>:
BlockReader<
Block = N::Block,
Header = N::BlockHeader,
Transaction = <N::BlockBody as BlockBody>::Transaction,
Receipt = N::Receipt,
>
{
}
impl<N, T> BlockReaderFor<N> for T
where
N: NetworkPrimitives,
T: BlockReader<
Block = N::Block,
Header = N::BlockHeader,
Transaction = <N::BlockBody as BlockBody>::Transaction,
Receipt = N::Receipt,
>,
{
}