pub struct NodeConfig {Show 62 fields
pub protocol_key_pair: AuthorityKeyPairWithPath,
pub worker_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 rpc: Option<RpcConfig>,
pub metrics_address: SocketAddr,
pub admin_interface_port: u16,
pub consensus_config: Option<ConsensusConfig>,
pub fullnode_sync_mode: Option<FullNodeSyncMode>,
pub enable_index_processing: bool,
pub sync_post_process_one_tx: bool,
pub remove_deprecated_tables: bool,
pub jsonrpc_server_type: Option<ServerType>,
pub disable_json_rpc: bool,
pub grpc_load_shed: Option<bool>,
pub grpc_concurrency_limit: Option<usize>,
pub p2p_config: P2pConfig,
pub genesis: Genesis,
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 db_checkpoint_config: DBCheckpointConfig,
pub expensive_safety_check_config: ExpensiveSafetyCheckConfig,
pub name_service_package_address: Option<SuiAddress>,
pub name_service_registry_id: Option<ObjectID>,
pub name_service_reverse_registry_id: Option<ObjectID>,
pub transaction_deny_config: TransactionDenyConfig,
pub peer_deny_sync_config: PeerDenySyncConfig,
pub dev_inspect_disabled: bool,
pub certificate_deny_config: CertificateDenyConfig,
pub state_debug_dump_config: StateDebugDumpConfig,
pub state_archive_read_config: Vec<StateArchiveConfig>,
pub state_snapshot_write_config: StateSnapshotConfig,
pub indexer_max_subscriptions: Option<usize>,
pub transaction_kv_store_read_config: TransactionKeyValueStoreReadConfig,
pub transaction_kv_store_write_config: Option<TransactionKeyValueStoreWriteConfig>,
pub jwk_fetch_interval_seconds: u64,
pub zklogin_oauth_providers: BTreeMap<Chain, BTreeSet<String>>,
pub authority_overload_config: AuthorityOverloadConfig,
pub run_with_range: Option<RunWithRange>,
pub policy_config: Option<PolicyConfig>,
pub firewall_config: Option<RemoteFirewallConfig>,
pub execution_cache: ExecutionCacheConfig,
pub state_accumulator_v2: bool,
pub funds_withdraw_scheduler_type: FundsWithdrawSchedulerType,
pub enable_soft_bundle: bool,
pub verifier_signing_config: VerifierSigningConfig,
pub enable_db_write_stall: Option<bool>,
pub enable_db_sync_to_disk: Option<bool>,
pub execution_time_observer_config: Option<ExecutionTimeObserverConfig>,
pub recent_submission_dedup_window_ms: Option<u64>,
pub chain_override_for_testing: Option<Chain>,
pub validator_client_monitor_config: Option<ValidatorClientMonitorConfig>,
pub fork_recovery: Option<ForkRecoveryConfig>,
pub transaction_driver_config: Option<TransactionDriverConfig>,
pub congestion_log: Option<CongestionLogConfig>,
pub address_prober: Option<AddressProberConfig>,
}Fields§
§protocol_key_pair: AuthorityKeyPairWithPath§worker_key_pair: KeyPairWithPath§account_key_pair: KeyPairWithPath§network_key_pair: KeyPairWithPath§db_path: PathBuf§network_address: Multiaddr§json_rpc_address: SocketAddr§rpc: Option<RpcConfig>§metrics_address: SocketAddr§admin_interface_port: u16§consensus_config: Option<ConsensusConfig>§fullnode_sync_mode: Option<FullNodeSyncMode>The sync mode for full nodes.
When None is provided and this is a full node then the default is used which is StateSyncOnly.
For validator nodes this is expected to be None
enable_index_processing: bool§sync_post_process_one_tx: boolWhen true, post-processing (JSON-RPC indexing and event emission) runs synchronously on the execution path instead of being spawned to a background thread. This is the legacy behavior and can be used as a rollback mechanism or for testing.
remove_deprecated_tables: bool§jsonrpc_server_type: Option<ServerType>Determines the jsonrpc server type as either:
- ‘websocket’ for a websocket based service (deprecated)
- ‘http’ for an http based service
- ‘both’ for both a websocket and http based service (deprecated)
disable_json_rpc: boolWhen true, the JSON-RPC HTTP service is not started. This only stops the
node from serving JSON-RPC requests; it is independent of JSON-RPC
indexing (see enable_index_processing), which continues to run. This
lets a node keep indexing while no longer exposing the JSON-RPC service,
and it does not affect the gRPC/REST service served on the same address.
Defaults to false so the service stays enabled unless explicitly turned
off.
grpc_load_shed: Option<bool>§grpc_concurrency_limit: Option<usize>§p2p_config: P2pConfig§genesis: Genesis§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: CheckpointExecutorConfig§metrics: Option<MetricsConfig>§supported_protocol_versions: Option<SupportedProtocolVersions>In a sui-node binary, this is set to SupportedProtocolVersions::SYSTEM_DEFAULT
in sui-node/src/main.rs. It is present in the config so that it can be changed by tests in
order to test protocol upgrades.
db_checkpoint_config: DBCheckpointConfig§expensive_safety_check_config: ExpensiveSafetyCheckConfig§name_service_package_address: Option<SuiAddress>§name_service_registry_id: Option<ObjectID>§name_service_reverse_registry_id: Option<ObjectID>§transaction_deny_config: TransactionDenyConfig§peer_deny_sync_config: PeerDenySyncConfigConfiguration for sharing recommended TransactionDenyConfig settings with allowlisted
peers via consensus. Off by default; the empty allowlist + both flags = false means
no behavior change versus prior versions.
dev_inspect_disabled: boolWhether dev-inspect transaction execution is disabled on this node.
certificate_deny_config: CertificateDenyConfig§state_debug_dump_config: StateDebugDumpConfig§state_archive_read_config: Vec<StateArchiveConfig>§state_snapshot_write_config: StateSnapshotConfig§indexer_max_subscriptions: Option<usize>§transaction_kv_store_read_config: TransactionKeyValueStoreReadConfig§transaction_kv_store_write_config: Option<TransactionKeyValueStoreWriteConfig>§jwk_fetch_interval_seconds: u64§zklogin_oauth_providers: BTreeMap<Chain, BTreeSet<String>>§run_with_range: Option<RunWithRange>§policy_config: Option<PolicyConfig>§firewall_config: Option<RemoteFirewallConfig>§execution_cache: ExecutionCacheConfig§state_accumulator_v2: bool§funds_withdraw_scheduler_type: FundsWithdrawSchedulerTypeThe type of funds withdraw scheduler to use. Default is Eager. Not exposed to file configuration.
enable_soft_bundle: bool§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.
enable_db_sync_to_disk: Option<bool>If set, determines whether database writes are synced to disk (fsync). Provides stronger durability at the cost of write performance. Falls back to SUI_DB_SYNC_TO_DISK env var if not set. Default: disabled.
execution_time_observer_config: Option<ExecutionTimeObserverConfig>§recent_submission_dedup_window_ms: Option<u64>Window (ms) during which a given transaction is allowed into consensus at most once, to suppress duplicate resubmissions. Defaults to 1000ms.
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 validator client monitoring from the client perspective. When enabled, tracks client-observed performance metrics for validators.
fork_recovery: Option<ForkRecoveryConfig>Fork recovery configuration for handling validator equivocation after forks
transaction_driver_config: Option<TransactionDriverConfig>Configuration for the transaction driver.
congestion_log: Option<CongestionLogConfig>Configuration for congestion tracker binary logging. When set, enables per-commit binary logs of congestion tracker state.
address_prober: Option<AddressProberConfig>Configuration for the trusted peer address prober.
Implementations§
Source§impl NodeConfig
impl NodeConfig
pub fn protocol_key_pair(&self) -> &AuthorityKeyPair
Sourcepub fn recent_submission_dedup_window(&self) -> Duration
pub fn recent_submission_dedup_window(&self) -> Duration
Window during which a given transaction is allowed into consensus at most once, used to suppress duplicate resubmissions at the submission handler.
pub fn worker_key_pair(&self) -> &NetworkKeyPair
pub fn network_key_pair(&self) -> &NetworkKeyPair
pub fn protocol_public_key(&self) -> AuthorityPublicKeyBytes
pub fn db_path(&self) -> PathBuf
pub fn db_checkpoint_path(&self) -> PathBuf
pub fn db_store_path(&self) -> PathBuf
pub fn archive_path(&self) -> PathBuf
pub fn snapshot_path(&self) -> PathBuf
pub fn network_address(&self) -> &Multiaddr
pub fn consensus_config(&self) -> Option<&ConsensusConfig>
Sourcepub fn intended_node_role(&self) -> NodeRole
pub fn intended_node_role(&self) -> NodeRole
Returns the node role as declared by configuration. This is the
intended role used for one-time startup decisions (e.g. whether to
create RPC servers or index stores). The authoritative per-epoch role
lives on AuthorityPerEpochStore::node_role().
pub fn has_observer_config_peers(&self) -> bool
pub fn genesis(&self) -> Result<&Genesis>
pub fn sui_address(&self) -> SuiAddress
pub fn archive_reader_config(&self) -> Option<ArchiveReaderConfig>
pub fn jsonrpc_server_type(&self) -> ServerType
Sourcepub fn json_rpc_enabled(&self) -> bool
pub fn json_rpc_enabled(&self) -> bool
Whether the JSON-RPC HTTP service should be served. This gates only the JSON-RPC endpoints; the gRPC/REST service and JSON-RPC indexing are unaffected.
pub fn rpc(&self) -> Option<&RpcConfig>
Trait Implementations§
Source§impl Clone for NodeConfig
impl Clone for NodeConfig
Source§fn clone(&self) -> NodeConfig
fn clone(&self) -> NodeConfig
1.0.0 · 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
fn persisted(self, path: &Path) -> PersistedConfig<Self>
fn load<P: AsRef<Path>>(path: P) -> Result<Self, Error>
fn save<P: AsRef<Path>>(&self, path: P) -> Result<(), Error>
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<T> AnySync for T
impl<T> AnySync for T
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read more§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> 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<'de, T> FromBcs for Twhere
T: Deserialize<'de>,
impl<'de, T> FromBcs for Twhere
T: Deserialize<'de>,
fn from_bcs<'de>(bytes: &'de [u8]) -> Result<Self, Error>where
Self: Deserialize<'de>,
fn from_bcs_base64(base64: &str) -> Result<Self, Error>where
Self: DeserializeOwned,
§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> 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 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 tonic::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> 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> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Serialize for T
impl<T> Serialize for T
fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<Ok, Error>
§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.