pub struct StateSyncConfig {Show 25 fields
pub pinned_checkpoints: Vec<(CheckpointSequenceNumber, CheckpointDigest)>,
pub interval_period_ms: Option<u64>,
pub mailbox_capacity: Option<usize>,
pub synced_checkpoint_broadcast_channel_capacity: Option<usize>,
pub checkpoint_header_download_concurrency: Option<usize>,
pub checkpoint_content_download_concurrency: Option<usize>,
pub checkpoint_content_download_tx_concurrency: Option<u64>,
pub timeout_ms: Option<u64>,
pub checkpoint_content_timeout_ms: Option<u64>,
pub push_checkpoint_summary_rate_limit: Option<NonZeroU32>,
pub get_checkpoint_summary_rate_limit: Option<NonZeroU32>,
pub get_checkpoint_contents_rate_limit: Option<NonZeroU32>,
pub get_checkpoint_contents_inflight_limit: Option<usize>,
pub get_checkpoint_contents_per_checkpoint_limit: Option<usize>,
pub wait_interval_when_no_peer_to_sync_content_ms: Option<u64>,
pub use_get_checkpoint_contents_v2: Option<bool>,
pub max_checkpoint_lookahead: Option<u64>,
pub max_checkpoint_sync_batch_size: Option<u64>,
pub max_checkpoint_summary_size: Option<usize>,
pub checkpoint_content_timeout_min_ms: Option<u64>,
pub checkpoint_content_timeout_max_ms: Option<u64>,
pub peer_scoring_window_ms: Option<u64>,
pub exploration_probability: Option<f64>,
pub peer_failure_rate: Option<f64>,
pub peer_disconnect_threshold_ms: Option<u64>,
}Fields§
§pinned_checkpoints: Vec<(CheckpointSequenceNumber, CheckpointDigest)>List of “known-good” checkpoints that state sync will be forced to use. State sync will skip verification of pinned checkpoints, and reject checkpoints with digests that don’t match pinned values for a given sequence number.
This can be used:
- in case of a fork, to prevent the node from syncing to the wrong chain.
- in case of a network stall, to force the node to proceed with a manually-injected checkpoint.
interval_period_ms: Option<u64>Query peers for their latest checkpoint every interval period.
If unspecified, this will default to 5,000 milliseconds.
mailbox_capacity: Option<usize>Size of the StateSync actor’s mailbox.
If unspecified, this will default to 1,024.
synced_checkpoint_broadcast_channel_capacity: Option<usize>Size of the broadcast channel use for notifying other systems of newly sync’ed checkpoints.
If unspecified, this will default to 1,024.
checkpoint_header_download_concurrency: Option<usize>Set the upper bound on the number of checkpoint headers to be downloaded concurrently.
If unspecified, this will default to 400.
checkpoint_content_download_concurrency: Option<usize>Set the upper bound on the number of checkpoint contents to be downloaded concurrently.
If unspecified, this will default to 400.
checkpoint_content_download_tx_concurrency: Option<u64>Set the upper bound on the number of individual transactions contained in checkpoint
contents to be downloaded concurrently. If both this value and
checkpoint_content_download_concurrency are set, the lower of the two will apply.
If unspecified, this will default to 50,000.
timeout_ms: Option<u64>Set the timeout that should be used when sending most state-sync RPC requests.
If unspecified, this will default to 10,000 milliseconds.
checkpoint_content_timeout_ms: Option<u64>Set the timeout that should be used when sending RPC requests to sync checkpoint contents.
If unspecified, this will default to 10,000 milliseconds.
push_checkpoint_summary_rate_limit: Option<NonZeroU32>Per-peer rate-limit (in requests/sec) for the PushCheckpointSummary RPC.
If unspecified, this will default to no limit.
get_checkpoint_summary_rate_limit: Option<NonZeroU32>Per-peer rate-limit (in requests/sec) for the GetCheckpointSummary RPC.
If unspecified, this will default to no limit.
get_checkpoint_contents_rate_limit: Option<NonZeroU32>Per-peer rate-limit (in requests/sec) for the GetCheckpointContents RPC.
If unspecified, this will default to no limit.
get_checkpoint_contents_inflight_limit: Option<usize>Per-peer inflight limit for the GetCheckpointContents RPC.
If unspecified, this will default to no limit.
get_checkpoint_contents_per_checkpoint_limit: Option<usize>Per-checkpoint inflight limit for the GetCheckpointContents RPC. This is enforced globally across all peers.
If unspecified, this will default to no limit.
wait_interval_when_no_peer_to_sync_content_ms: Option<u64>The amount of time to wait before retry if there are no peers to sync content from. If unspecified, this will set to default value
use_get_checkpoint_contents_v2: Option<bool>If true, the v2 version of get_checkpoint_contents will be used.
If unspecified, this will default to true.
max_checkpoint_lookahead: Option<u64>Maximum lookahead (in checkpoint sequence numbers) for storing unverified checkpoint summaries received via PushCheckpointSummary.
If unspecified, this will default to 1,000.
max_checkpoint_sync_batch_size: Option<u64>Maximum number of checkpoint headers to attempt to sync in a single sync task.
If unspecified, this will default to 400.
max_checkpoint_summary_size: Option<usize>Maximum serialized size in bytes for a CertifiedCheckpointSummary received via PushCheckpointSummary.
If unspecified, this will default to 262,144 (256 KiB).
checkpoint_content_timeout_min_ms: Option<u64>Minimum timeout for checkpoint content downloads (adaptive timeout lower bound).
If unspecified, this will default to 10,000 milliseconds.
checkpoint_content_timeout_max_ms: Option<u64>Maximum timeout for checkpoint content downloads (adaptive timeout upper bound).
If unspecified, this will default to 30,000 milliseconds.
peer_scoring_window_ms: Option<u64>Time window for peer scoring samples.
If unspecified, this will default to 60,000 milliseconds.
exploration_probability: Option<f64>Probability of selecting an unknown peer to explore its throughput.
If unspecified, this will default to 0.1.
peer_failure_rate: Option<f64>Failure rate threshold for marking a peer as failing. A peer is marked as failing if its failure rate exceeds this threshold.
If unspecified, this will default to 0.3 (30%).
peer_disconnect_threshold_ms: Option<u64>Duration in milliseconds that a peer must be continuously failing before it is reported to discovery for disconnection. Set to 0 to disable automatic reporting of failing peers.
If unspecified, this will default to 30,000 (30 seconds).
Implementations§
Source§impl StateSyncConfig
impl StateSyncConfig
pub fn interval_period(&self) -> Duration
pub fn mailbox_capacity(&self) -> usize
pub fn synced_checkpoint_broadcast_channel_capacity(&self) -> usize
pub fn checkpoint_header_download_concurrency(&self) -> usize
pub fn checkpoint_content_download_concurrency(&self) -> usize
pub fn checkpoint_content_download_tx_concurrency(&self) -> u64
pub fn timeout(&self) -> Duration
pub fn checkpoint_content_timeout(&self) -> Duration
pub fn wait_interval_when_no_peer_to_sync_content(&self) -> Duration
pub fn use_get_checkpoint_contents_v2(&self) -> bool
pub fn max_checkpoint_lookahead(&self) -> u64
pub fn max_checkpoint_sync_batch_size(&self) -> u64
pub fn max_checkpoint_summary_size(&self) -> usize
pub fn checkpoint_content_timeout_min(&self) -> Duration
pub fn checkpoint_content_timeout_max(&self) -> Duration
pub fn peer_scoring_window(&self) -> Duration
pub fn exploration_probability(&self) -> f64
pub fn peer_failure_rate(&self) -> f64
pub fn peer_disconnect_threshold(&self) -> Duration
pub fn randomized_for_testing() -> Self
Trait Implementations§
Source§impl Clone for StateSyncConfig
impl Clone for StateSyncConfig
Source§fn clone(&self) -> StateSyncConfig
fn clone(&self) -> StateSyncConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for StateSyncConfig
impl Debug for StateSyncConfig
Source§impl Default for StateSyncConfig
impl Default for StateSyncConfig
Source§fn default() -> StateSyncConfig
fn default() -> StateSyncConfig
Source§impl<'de> Deserialize<'de> for StateSyncConfig
impl<'de> Deserialize<'de> for StateSyncConfig
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 StateSyncConfig
impl RefUnwindSafe for StateSyncConfig
impl Send for StateSyncConfig
impl Sync for StateSyncConfig
impl Unpin for StateSyncConfig
impl UnsafeUnpin for StateSyncConfig
impl UnwindSafe for StateSyncConfig
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> InitializableFromZeroed for Twhere
T: Default,
impl<T> InitializableFromZeroed for Twhere
T: Default,
§unsafe fn initialize(place: *mut T)
unsafe fn initialize(place: *mut T)
§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.