pub struct NodeConfig<ChainSpec> {Show 13 fields
pub datadir: DatadirArgs,
pub config: Option<PathBuf>,
pub chain: Arc<ChainSpec>,
pub metrics: Option<SocketAddr>,
pub instance: u16,
pub network: NetworkArgs,
pub rpc: RpcServerArgs,
pub txpool: TxPoolArgs,
pub builder: PayloadBuilderArgs,
pub debug: DebugArgs,
pub db: DatabaseArgs,
pub dev: DevArgs,
pub pruning: PruningArgs,
}
Expand description
This includes all necessary configuration to launch the node. The individual configuration options can be overwritten before launching the node.
§Example
async fn t() {
// create the builder
let builder = NodeConfig::default();
// configure the rpc apis
let mut rpc = RpcServerArgs::default().with_http().with_ws();
rpc.http_api = Some(RpcModuleSelection::All);
let builder = builder.with_rpc(rpc);
}
This can also be used to launch a node with a temporary test database. This can be done with
the NodeConfig::test
method.
§Example
async fn t() {
// create the builder with a test database, using the `test` method
let builder = NodeConfig::test();
// configure the rpc apis
let mut rpc = RpcServerArgs::default().with_http().with_ws();
rpc.http_api = Some(RpcModuleSelection::All);
let builder = builder.with_rpc(rpc);
}
Fields§
§datadir: DatadirArgs
All data directory related arguments
config: Option<PathBuf>
The path to the configuration file to use.
chain: Arc<ChainSpec>
The chain this node is running.
Possible values are either a built-in chain or the path to a chain specification file.
metrics: Option<SocketAddr>
Enable Prometheus metrics.
The metrics will be served at the given interface and port.
instance: u16
Add a new instance of a node.
Configures the ports of the node to avoid conflicts with the defaults. This is useful for running multiple nodes on the same machine.
Max number of instances is 200. It is chosen in a way so that it’s not possible to have port numbers that conflict with each other.
Changes to the following port numbers:
DISCOVERY_PORT
: default +instance
- 1DISCOVERY_V5_PORT
: default +instance
- 1AUTH_PORT
: default +instance
* 100 - 100HTTP_RPC_PORT
: default -instance
+ 1WS_RPC_PORT
: default +instance
* 2 - 2
network: NetworkArgs
All networking related arguments
rpc: RpcServerArgs
All rpc related arguments
txpool: TxPoolArgs
All txpool related arguments with –txpool prefix
builder: PayloadBuilderArgs
All payload builder related arguments
debug: DebugArgs
All debug related arguments with –debug prefix
db: DatabaseArgs
All database related arguments
dev: DevArgs
All dev related arguments with –dev prefix
pruning: PruningArgs
All pruning related arguments
Implementations§
Source§impl NodeConfig<ChainSpec>
impl NodeConfig<ChainSpec>
Sourcepub fn test() -> Self
pub fn test() -> Self
Creates a testing NodeConfig
, causing the database to be launched ephemerally.
Source§impl<ChainSpec> NodeConfig<ChainSpec>
impl<ChainSpec> NodeConfig<ChainSpec>
Sourcepub fn new(chain: Arc<ChainSpec>) -> Self
pub fn new(chain: Arc<ChainSpec>) -> Self
Creates a new config with given chain spec, setting all fields to default values.
Sourcepub const fn dev(self) -> Self
pub const fn dev(self) -> Self
Sets –dev mode for the node.
In addition to setting the --dev
flag, this also:
- disables discovery in
NetworkArgs
.
Sourcepub const fn set_dev(self, dev: bool) -> Self
pub const fn set_dev(self, dev: bool) -> Self
Sets –dev mode for the node NodeConfig::dev
, if dev
is true.
Sourcepub fn with_datadir_args(self, datadir_args: DatadirArgs) -> Self
pub fn with_datadir_args(self, datadir_args: DatadirArgs) -> Self
Set the data directory args for the node
Sourcepub fn with_config(self, config: impl Into<PathBuf>) -> Self
pub fn with_config(self, config: impl Into<PathBuf>) -> Self
Set the config file for the node
Sourcepub fn with_chain(self, chain: impl Into<Arc<ChainSpec>>) -> Self
pub fn with_chain(self, chain: impl Into<Arc<ChainSpec>>) -> Self
Set the [ChainSpec
] for the node
Sourcepub const fn with_metrics(self, metrics: SocketAddr) -> Self
pub const fn with_metrics(self, metrics: SocketAddr) -> Self
Set the metrics address for the node
Sourcepub const fn with_instance(self, instance: u16) -> Self
pub const fn with_instance(self, instance: u16) -> Self
Set the instance for the node
Sourcepub fn with_network(self, network: NetworkArgs) -> Self
pub fn with_network(self, network: NetworkArgs) -> Self
Set the network args for the node
Sourcepub fn with_rpc(self, rpc: RpcServerArgs) -> Self
pub fn with_rpc(self, rpc: RpcServerArgs) -> Self
Set the rpc args for the node
Sourcepub fn with_txpool(self, txpool: TxPoolArgs) -> Self
pub fn with_txpool(self, txpool: TxPoolArgs) -> Self
Set the txpool args for the node
Sourcepub fn with_payload_builder(self, builder: PayloadBuilderArgs) -> Self
pub fn with_payload_builder(self, builder: PayloadBuilderArgs) -> Self
Set the builder args for the node
Sourcepub fn with_debug(self, debug: DebugArgs) -> Self
pub fn with_debug(self, debug: DebugArgs) -> Self
Set the debug args for the node
Sourcepub const fn with_db(self, db: DatabaseArgs) -> Self
pub const fn with_db(self, db: DatabaseArgs) -> Self
Set the database args for the node
Sourcepub fn with_pruning(self, pruning: PruningArgs) -> Self
pub fn with_pruning(self, pruning: PruningArgs) -> Self
Set the pruning args for the node
Sourcepub fn prune_config(&self) -> Option<PruneConfig>where
ChainSpec: EthChainSpec,
pub fn prune_config(&self) -> Option<PruneConfig>where
ChainSpec: EthChainSpec,
Returns pruning configuration.
Sourcepub async fn max_block<Provider, Client>(
&self,
network_client: Client,
provider: Provider,
) -> Result<Option<BlockNumber>>where
Provider: HeaderProvider,
Client: HeadersClient<Header: BlockHeader>,
pub async fn max_block<Provider, Client>(
&self,
network_client: Client,
provider: Provider,
) -> Result<Option<BlockNumber>>where
Provider: HeaderProvider,
Client: HeadersClient<Header: BlockHeader>,
Returns the max block that the node should run to, looking it up from the network if necessary
Sourcepub fn lookup_head<Factory>(&self, factory: &Factory) -> ProviderResult<Head>where
Factory: DatabaseProviderFactory<Provider: HeaderProvider + StageCheckpointReader + BlockHashReader>,
pub fn lookup_head<Factory>(&self, factory: &Factory) -> ProviderResult<Head>where
Factory: DatabaseProviderFactory<Provider: HeaderProvider + StageCheckpointReader + BlockHashReader>,
Fetches the head block from the database.
If the database is empty, returns the genesis block.
Sourcepub async fn lookup_or_fetch_tip<Provider, Client>(
&self,
provider: Provider,
client: Client,
tip: B256,
) -> ProviderResult<u64>where
Provider: HeaderProvider,
Client: HeadersClient<Header: BlockHeader>,
pub async fn lookup_or_fetch_tip<Provider, Client>(
&self,
provider: Provider,
client: Client,
tip: B256,
) -> ProviderResult<u64>where
Provider: HeaderProvider,
Client: HeadersClient<Header: BlockHeader>,
Attempt to look up the block number for the tip hash in the database. If it doesn’t exist, download the header and return the block number.
NOTE: The download is attempted with infinite retries.
Sourcepub async fn fetch_tip_from_network<Client>(
&self,
client: Client,
tip: BlockHashOrNumber,
) -> SealedHeader<Client::Header>where
Client: HeadersClient<Header: BlockHeader>,
pub async fn fetch_tip_from_network<Client>(
&self,
client: Client,
tip: BlockHashOrNumber,
) -> SealedHeader<Client::Header>where
Client: HeadersClient<Header: BlockHeader>,
Attempt to look up the block with the given number and return the header.
NOTE: The download is attempted with infinite retries.
Sourcepub fn adjust_instance_ports(&mut self)
pub fn adjust_instance_ports(&mut self)
Change rpc port numbers based on the instance number, using the inner
RpcServerArgs::adjust_instance_ports
method.
Sourcepub fn with_unused_ports(self) -> Self
pub fn with_unused_ports(self) -> Self
Sets networking and RPC ports to zero, causing the OS to choose random unused ports when sockets are bound.
Sourcepub fn datadir(&self) -> ChainPath<DataDirPath>where
ChainSpec: EthChainSpec,
pub fn datadir(&self) -> ChainPath<DataDirPath>where
ChainSpec: EthChainSpec,
Resolve the final datadir path.
Sourcepub fn load_path<T: Serialize + DeserializeOwned + Default>(
path: impl AsRef<Path>,
) -> Result<T>
pub fn load_path<T: Serialize + DeserializeOwned + Default>( path: impl AsRef<Path>, ) -> Result<T>
Load an application configuration from a specified path.
A new configuration file is created with default values if none exists.
Sourcepub fn map_chainspec<F, C>(self, f: F) -> NodeConfig<C>
pub fn map_chainspec<F, C>(self, f: F) -> NodeConfig<C>
Modifies the [ChainSpec
] generic of the config using the provided closure.
Trait Implementations§
Source§impl<ChainSpec> Clone for NodeConfig<ChainSpec>
impl<ChainSpec> Clone for NodeConfig<ChainSpec>
Source§impl<ChainSpec: Debug> Debug for NodeConfig<ChainSpec>
impl<ChainSpec: Debug> Debug for NodeConfig<ChainSpec>
Auto Trait Implementations§
impl<ChainSpec> Freeze for NodeConfig<ChainSpec>
impl<ChainSpec> RefUnwindSafe for NodeConfig<ChainSpec>where
ChainSpec: RefUnwindSafe,
impl<ChainSpec> Send for NodeConfig<ChainSpec>
impl<ChainSpec> Sync for NodeConfig<ChainSpec>
impl<ChainSpec> Unpin for NodeConfig<ChainSpec>
impl<ChainSpec> UnwindSafe for NodeConfig<ChainSpec>where
ChainSpec: RefUnwindSafe,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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> ⓘ
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> MaybeSend for Twhere
T: Send,
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: 1792 bytes