pub struct NodeConfig {Show 44 fields
pub authority_key_pair: AuthorityKeyPairWithPath,
pub protocol_key_pair: KeyPairWithPath,
pub account_key_pair: KeyPairWithPath,
pub network_key_pair: KeyPairWithPath,
pub db_path: PathBuf,
pub network_address: Multiaddr,
pub json_rpc_address: SocketAddr,
pub metrics_address: SocketAddr,
pub admin_interface_address: SocketAddr,
pub consensus_config: Option<ConsensusConfig>,
pub enable_jsonrpc_api: bool,
pub enable_index_processing: Option<bool>,
pub grpc_load_shed: Option<bool>,
pub grpc_concurrency_limit_per_core: NonZeroUsize,
pub p2p_config: P2pConfig,
pub genesis: Genesis,
pub migration_tx_data_path: Option<PathBuf>,
pub authority_store_pruning_config: AuthorityStorePruningConfig,
pub end_of_epoch_broadcast_channel_capacity: usize,
pub checkpoint_executor_config: CheckpointExecutorConfig,
pub metrics: Option<MetricsConfig>,
pub supported_protocol_versions: Option<SupportedProtocolVersions>,
pub expensive_safety_check_config: ExpensiveSafetyCheckConfig,
pub transaction_deny_config: TransactionDenyConfig,
pub certificate_deny_config: CertificateDenyConfig,
pub state_debug_dump_config: StateDebugDumpConfig,
pub checkpoint_archive_config: Option<CheckpointArchiveConfig>,
pub state_snapshot_write_config: StateSnapshotConfig,
pub transaction_kv_store_read_config: TransactionKeyValueStoreReadConfig,
pub transaction_kv_store_write_config: Option<TransactionKeyValueStoreWriteConfig>,
pub authority_overload_config: AuthorityOverloadConfig,
pub run_with_range: Option<RunWithRange>,
pub policy_config: Option<PolicyConfig>,
pub execution_cache_config: ExecutionCacheConfig,
pub full_checkpoint_contents_cache_size_mb: usize,
pub enable_validator_tx_finalizer: bool,
pub enable_soft_locking: bool,
pub verifier_signing_config: VerifierSigningConfig,
pub enable_db_write_stall: Option<bool>,
pub iota_names_config: Option<IotaNamesConfig>,
pub enable_grpc_api: bool,
pub grpc_api_config: Option<GrpcApiConfig>,
pub chain_override_for_testing: Option<Chain>,
pub validator_client_monitor_config: Option<ValidatorClientMonitorConfig>,
}Fields§
The public key bytes corresponding to the private key that the validator holds to sign transactions.
protocol_key_pair: KeyPairWithPathThe public key bytes corresponding to the private key that the validator holds to sign consensus blocks.
account_key_pair: KeyPairWithPath§network_key_pair: KeyPairWithPathThe public key bytes corresponding to the private key that the validator uses to establish TLS connections.
db_path: PathBuf§network_address: MultiaddrThe network address for gRPC communication.
Can be overwritten with args listen-address parameters.
json_rpc_address: SocketAddr§metrics_address: SocketAddrThe address for Prometheus metrics.
admin_interface_address: SocketAddrThe address for the admin interface that is run in the metrics separate runtime and provides access to admin node commands such as logging and tracing options.
consensus_config: Option<ConsensusConfig>Configuration struct for the consensus.
enable_jsonrpc_api: boolFlag to enable the JSON-RPC API. Default: true. When false a full
node serves only the /health endpoint on json_rpc_address.
enable_index_processing: Option<bool>Renamed to enable_jsonrpc_api; see NodeConfig::check_renamed_keys
for which configs that still set it are refused. Never set this.
Removal is tracked in https://github.com/iotaledger/iota/issues/12885.
grpc_load_shed: Option<bool>Flag to enable gRPC load shedding: requests over a service’s
concurrency limit are rejected immediately with RESOURCE_EXHAUSTED
instead of waiting for a slot.
grpc_concurrency_limit_per_core: NonZeroUsizeMaximum number of concurrent in-flight requests per CPU core, applied
to each service of the validator gRPC server separately (Validator,
ValidatorV2, ValidatorPeer), so a flood of client transaction
submissions cannot crowd validator-peer RPCs out of admission slots.
The effective per-service limit is this value multiplied by the CPU
cores of the machine at server startup, so the same config file scales
with the hardware.
Most request time is spent awaiting locks, I/O or consensus rather
than on-CPU, so the default ceiling is generous: it bounds total
in-flight work so a request flood cannot grow queues and memory
without limit, it does not throttle normal load. Operators wanting
hard load-shedding can lower it and set grpc_load_shed.
A value of zero is rejected at config load: it would not disable the limit, it would block every request.
p2p_config: P2pConfigConfiguration struct for P2P.
genesis: GenesisContains genesis location that might be InPlace
for reading all genesis data to memory or InFile,
and OnceCell pointer to a genesis struct.
migration_tx_data_path: Option<PathBuf>Contains the path where to find the migration blob.
Configuration for pruning of the authority store, to define when an old data is removed from the storage space.
end_of_epoch_broadcast_channel_capacity: usizeSize of the broadcast channel used for notifying other systems of end of epoch.
If unspecified, this will default to 128.
checkpoint_executor_config: CheckpointExecutorConfigConfiguration for the checkpoint executor for limiting the number of checkpoints to execute concurrently, and to allow for checkpoint post-processing.
metrics: Option<MetricsConfig>§supported_protocol_versions: Option<SupportedProtocolVersions>In a iota-node binary, this is set to
SupportedProtocolVersions::SYSTEM_DEFAULT in iota-node/src/main.rs.
It is present in the config so that it can be changed by tests in
order to test protocol upgrades.
expensive_safety_check_config: ExpensiveSafetyCheckConfigConfiguration for enabling/disabling expensive safety checks.
transaction_deny_config: TransactionDenyConfigConfiguration to specify rules for denying transactions
based on objectsIDs, addresses, or enable/disable many
features such as publishing new packages or using shared objects.
certificate_deny_config: CertificateDenyConfigConfig used to deny execution for certificate digests know for crashing or hanging validator nodes.
Should be used for a fast temporary fixes and removed once the issue is fixed.
state_debug_dump_config: StateDebugDumpConfigUsed to determine how state debug information is dumped when a node forks.
checkpoint_archive_config: Option<CheckpointArchiveConfig>§state_snapshot_write_config: StateSnapshotConfigDetermines if snapshot should be uploaded to the remote storage.
transaction_kv_store_read_config: TransactionKeyValueStoreReadConfig§transaction_kv_store_write_config: Option<TransactionKeyValueStoreWriteConfig>Configuration for defining thresholds and settings for managing system overload conditions in a node.
run_with_range: Option<RunWithRange>Specifies the ending epoch for a node for debugging purposes.
Ignored if set by config, can be configured only by cli arguments.
policy_config: Option<PolicyConfig>Traffic control policy. For killswitch use None.
With the key absent the default denial-of-service protection policy
applies, an explicit null turns traffic control off, and a value
configures it.
execution_cache_config: ExecutionCacheConfig§full_checkpoint_contents_cache_size_mb: usizeMemory budget in MiB for the in-memory cache of full checkpoint contents, which serves the checkpoint executor’s bulk transaction loads and checkpoint-contents requests from state-sync peers. When the budget is exceeded, the oldest checkpoints are evicted first. Set to 0 to disable the cache; consumers then fall back to reconstructing contents from the transaction and effects stores.
The budget is accounted in serialized (BCS) bytes; the resident memory of a full cache is somewhat higher than the configured value due to in-memory representation overhead.
enable_validator_tx_finalizer: bool§enable_soft_locking: boolEnables the pre-consensus soft-locking mechanism used by the certificate-less (pcool) transaction flow (default: enabled).
When disabled, post-consensus validation alone resolves owned-object conflicts. Has no effect unless the pcool flow is enabled.
verifier_signing_config: VerifierSigningConfig§enable_db_write_stall: Option<bool>If a value is set, it determines if writes to DB can stall, which can halt the whole process. By default, write stall is enabled on validators but not on fullnodes.
iota_names_config: Option<IotaNamesConfig>§enable_grpc_api: boolFlag to enable the gRPC API.
grpc_api_config: Option<GrpcApiConfig>Configuration of the gRPC API, read when enable_grpc_api is set.
With the key absent the default configuration applies, an explicit
null leaves the API unconfigured — a node with enable-grpc-api set
then fails to start — and a value configures it.
chain_override_for_testing: Option<Chain>Allow overriding the chain for testing purposes. For instance, it allows you to create a test network that believes it is mainnet or testnet. Attempting to override this value on production networks will result in an error.
validator_client_monitor_config: Option<ValidatorClientMonitorConfig>Configuration for the validator client monitor that tracks client-observed performance metrics for validators.
Implementations§
Source§impl NodeConfig
impl NodeConfig
Sourcepub fn check_renamed_keys(&self) -> Result<()>
pub fn check_renamed_keys(&self) -> Result<()>
Fails if the config file still sets a key that has been renamed, unless the new key already does what the old value asked for; that case only logs a warning. Call this before doing any work.
enable-index-processing is accepted on a validator, which never built
the JSON-RPC index whatever its value, and as true while
enable-jsonrpc-api is on. false on a full node is refused: it served
the JSON-RPC API without its index, which enable-jsonrpc-api cannot
express.
pub fn protocol_key_pair(&self) -> &NetworkKeyPair
pub fn network_key_pair(&self) -> &NetworkKeyPair
pub fn db_path(&self) -> PathBuf
pub fn snapshot_path(&self) -> PathBuf
pub fn network_address(&self) -> &Multiaddr
pub fn consensus_config(&self) -> Option<&ConsensusConfig>
Sourcepub fn maintains_rpc_indexes(&self) -> bool
pub fn maintains_rpc_indexes(&self) -> bool
Whether this node builds the RPC indexes: only a fullnode with the JSON-RPC or gRPC API enabled does.
pub fn genesis(&self) -> Result<&Genesis>
pub fn load_migration_tx_data(&self) -> Result<MigrationTxData>
pub fn iota_address(&self) -> Address
pub fn checkpoint_archive_config(&self) -> Option<&CheckpointArchiveConfig>
Sourcepub fn is_validator(&self) -> bool
pub fn is_validator(&self) -> bool
A config selects the validator role exactly when it has a consensus config.
Trait Implementations§
Source§impl Clone for NodeConfig
impl Clone for NodeConfig
Source§fn clone(&self) -> NodeConfig
fn clone(&self) -> NodeConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Config for NodeConfig
impl Config for NodeConfig
Source§impl Debug for NodeConfig
impl Debug for NodeConfig
Source§impl<'de> Deserialize<'de> for NodeConfig
impl<'de> Deserialize<'de> for NodeConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl !Freeze for NodeConfig
impl RefUnwindSafe for NodeConfig
impl Send for NodeConfig
impl Sync for NodeConfig
impl Unpin for NodeConfig
impl UnsafeUnpin for NodeConfig
impl UnwindSafe for NodeConfig
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T> ErasedDestructor for Twhere
T: 'static,
§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> 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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].impl<T> MaybeSendSync for T
§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> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§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.