pub struct NetworkConfigBuilder<N: NetworkPrimitives = EthNetworkPrimitives> { /* private fields */ }
Expand description
Builder for NetworkConfig
.
Implementations§
Source§impl<N: NetworkPrimitives> NetworkConfigBuilder<N>
impl<N: NetworkPrimitives> NetworkConfigBuilder<N>
Sourcepub fn with_rng_secret_key() -> Self
pub fn with_rng_secret_key() -> Self
Create a new builder instance with a random secret key.
Sourcepub fn new(secret_key: SecretKey) -> Self
pub fn new(secret_key: SecretKey) -> Self
Create a new builder instance with the given secret key.
Sourcepub fn apply<F>(self, f: F) -> Selfwhere
F: FnOnce(Self) -> Self,
pub fn apply<F>(self, f: F) -> Selfwhere
F: FnOnce(Self) -> Self,
Apply a function to the builder.
Sourcepub fn get_peer_id(&self) -> PeerId
pub fn get_peer_id(&self) -> PeerId
Returns the configured [PeerId
]
Sourcepub const fn secret_key(&self) -> &SecretKey
pub const fn secret_key(&self) -> &SecretKey
Returns the configured SecretKey
, from which the node’s identity is derived.
Sourcepub const fn network_mode(self, network_mode: NetworkMode) -> Self
pub const fn network_mode(self, network_mode: NetworkMode) -> Self
Sets the NetworkMode
.
Sourcepub const fn with_pow(self) -> Self
pub const fn with_pow(self) -> Self
Configures the network to use proof-of-work.
This effectively allows block propagation in the eth
sub-protocol, which has been
soft-deprecated with ethereum PoS
after the merge. Even if block propagation is
technically allowed, according to the eth protocol, it is not expected to be used in PoS
networks and peers are supposed to terminate the connection if they receive a NewBlock
message.
Sourcepub const fn set_head(self, head: Head) -> Self
pub const fn set_head(self, head: Head) -> Self
Sets the highest synced block.
This is used to construct the appropriate [ForkFilter
] and [Status
] message.
If not set, this defaults to the genesis specified by the current chain specification.
Sourcepub fn hello_message(self, hello_message: HelloMessageWithProtocols) -> Self
pub fn hello_message(self, hello_message: HelloMessageWithProtocols) -> Self
Sets the HelloMessage
to send when connecting to peers.
let peer_id = builder.get_peer_id();
builder.hello_message(HelloMessage::builder(peer_id).build());
Sourcepub fn peer_config(self, config: PeersConfig) -> Self
pub fn peer_config(self, config: PeersConfig) -> Self
Set a custom peer config for how peers are handled
Sourcepub fn with_task_executor(self, executor: Box<dyn TaskSpawner>) -> Self
pub fn with_task_executor(self, executor: Box<dyn TaskSpawner>) -> Self
Sets the executor to use for spawning tasks.
If None
, then [tokio::spawn
] is used for spawning tasks.
Sourcepub const fn sessions_config(self, config: SessionsConfig) -> Self
pub const fn sessions_config(self, config: SessionsConfig) -> Self
Sets a custom config for how sessions are handled.
Sourcepub const fn transactions_manager_config(
self,
config: TransactionsManagerConfig,
) -> Self
pub const fn transactions_manager_config( self, config: TransactionsManagerConfig, ) -> Self
Configures the transactions manager with the given config.
Sourcepub const fn set_addrs(self, addr: SocketAddr) -> Self
pub const fn set_addrs(self, addr: SocketAddr) -> Self
Sets the discovery and listener address
This is a convenience function for both NetworkConfigBuilder::listener_addr
and
NetworkConfigBuilder::discovery_addr
.
By default, both are on the same port:
DEFAULT_DISCOVERY_PORT
Sourcepub const fn listener_addr(self, listener_addr: SocketAddr) -> Self
pub const fn listener_addr(self, listener_addr: SocketAddr) -> Self
Sets the socket address the network will listen on.
By default, this is [DEFAULT_DISCOVERY_ADDRESS
]
Sourcepub fn listener_port(self, port: u16) -> Self
pub fn listener_port(self, port: u16) -> Self
Sets the port of the address the network will listen on.
By default, this is DEFAULT_DISCOVERY_PORT
Sourcepub const fn discovery_addr(self, discovery_addr: SocketAddr) -> Self
pub const fn discovery_addr(self, discovery_addr: SocketAddr) -> Self
Sets the socket address the discovery network will listen on
Sourcepub fn discovery_port(self, port: u16) -> Self
pub fn discovery_port(self, port: u16) -> Self
Sets the port of the address the discovery network will listen on.
By default, this is DEFAULT_DISCOVERY_PORT
Sourcepub fn with_unused_discovery_port(self) -> Self
pub fn with_unused_discovery_port(self) -> Self
Sets the discovery port to an unused port. This is useful for testing.
Sourcepub fn with_unused_listener_port(self) -> Self
pub fn with_unused_listener_port(self) -> Self
Sets the listener port to an unused port. This is useful for testing.
Sourcepub fn external_ip_resolver(self, resolver: NatResolver) -> Self
pub fn external_ip_resolver(self, resolver: NatResolver) -> Self
Sets the external ip resolver to use for discovery v4.
If no [Discv4ConfigBuilder
] is set via Self::discovery
, this will create a new one.
This is a convenience function for setting the external ip resolver on the default
[Discv4Config
] config.
Sourcepub fn discovery_v5(self, builder: ConfigBuilder) -> Self
pub fn discovery_v5(self, builder: ConfigBuilder) -> Self
Sets the discv5 config to use.
Sourcepub fn dns_discovery(self, config: DnsDiscoveryConfig) -> Self
pub fn dns_discovery(self, config: DnsDiscoveryConfig) -> Self
Sets the dns discovery config to use.
Sourcepub fn mainnet_boot_nodes(self) -> Self
pub fn mainnet_boot_nodes(self) -> Self
Convenience function for setting Self::boot_nodes
to the mainnet boot nodes.
Sourcepub fn sepolia_boot_nodes(self) -> Self
pub fn sepolia_boot_nodes(self) -> Self
Convenience function for setting Self::boot_nodes
to the sepolia boot nodes.
Sourcepub fn boot_nodes<T: Into<TrustedPeer>>(
self,
nodes: impl IntoIterator<Item = T>,
) -> Self
pub fn boot_nodes<T: Into<TrustedPeer>>( self, nodes: impl IntoIterator<Item = T>, ) -> Self
Sets the boot nodes to use to bootstrap the configured discovery services (discv4 + discv5).
Sourcepub fn boot_nodes_iter(&self) -> impl Iterator<Item = &TrustedPeer> + '_
pub fn boot_nodes_iter(&self) -> impl Iterator<Item = &TrustedPeer> + '_
Returns an iterator over all configured boot nodes.
Sourcepub fn disable_dns_discovery(self) -> Self
pub fn disable_dns_discovery(self) -> Self
Disable the DNS discovery.
pub const fn disable_nat(self) -> Self
Sourcepub fn disable_discovery(self) -> Self
pub fn disable_discovery(self) -> Self
Disables all discovery.
Sourcepub fn disable_discovery_if(self, disable: bool) -> Self
pub fn disable_discovery_if(self, disable: bool) -> Self
Disables all discovery if the given condition is true.
Sourcepub fn disable_discv4_discovery(self) -> Self
pub fn disable_discv4_discovery(self) -> Self
Disable the Discv4 discovery.
Sourcepub fn disable_dns_discovery_if(self, disable: bool) -> Self
pub fn disable_dns_discovery_if(self, disable: bool) -> Self
Disable the DNS discovery if the given condition is true.
Sourcepub fn disable_discv4_discovery_if(self, disable: bool) -> Self
pub fn disable_discv4_discovery_if(self, disable: bool) -> Self
Disable the Discv4 discovery if the given condition is true.
Sourcepub fn add_rlpx_sub_protocol(self, protocol: impl IntoRlpxSubProtocol) -> Self
pub fn add_rlpx_sub_protocol(self, protocol: impl IntoRlpxSubProtocol) -> Self
Adds a new additional protocol to the RLPx
sub-protocol list.
Sourcepub const fn disable_tx_gossip(self, disable_tx_gossip: bool) -> Self
pub const fn disable_tx_gossip(self, disable_tx_gossip: bool) -> Self
Sets whether tx gossip is disabled.
Sourcepub fn block_import(self, block_import: Box<dyn BlockImport<N::Block>>) -> Self
pub fn block_import(self, block_import: Box<dyn BlockImport<N::Block>>) -> Self
Sets the block import type.
Sourcepub fn build_with_noop_provider<ChainSpec>(
self,
chain_spec: Arc<ChainSpec>,
) -> NetworkConfig<NoopProvider<ChainSpec>, N>where
ChainSpec: EthChainSpec + Hardforks + 'static,
pub fn build_with_noop_provider<ChainSpec>(
self,
chain_spec: Arc<ChainSpec>,
) -> NetworkConfig<NoopProvider<ChainSpec>, N>where
ChainSpec: EthChainSpec + Hardforks + 'static,
Convenience function for creating a NetworkConfig
with a noop provider that does
nothing.
Sourcepub const fn add_nat(self, nat: Option<NatResolver>) -> Self
pub const fn add_nat(self, nat: Option<NatResolver>) -> Self
Sets the NAT resolver for external IP.
Sourcepub fn build<C>(self, client: C) -> NetworkConfig<C, N>where
C: ChainSpecProvider<ChainSpec: Hardforks>,
pub fn build<C>(self, client: C) -> NetworkConfig<C, N>where
C: ChainSpecProvider<ChainSpec: Hardforks>,
Consumes the type and creates the actual NetworkConfig
for the given client type that can interact with the chain.
The given client is to be used for interacting with the chain, for example fetching the corresponding block for a given block hash we receive from a peer in the status message when establishing a connection.
Trait Implementations§
Auto Trait Implementations§
impl<N> Freeze for NetworkConfigBuilder<N>
impl<N = EthNetworkPrimitives> !RefUnwindSafe for NetworkConfigBuilder<N>
impl<N> Send for NetworkConfigBuilder<N>
impl<N> Sync for NetworkConfigBuilder<N>
impl<N> Unpin for NetworkConfigBuilder<N>
impl<N = EthNetworkPrimitives> !UnwindSafe for NetworkConfigBuilder<N>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where
S: Into<Dispatch>,
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> MaybeDebug for Twhere
T: Debug,
impl<T> MaybeSendSync for T
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 2264 bytes