pub struct SubscriberConfig {Show 15 fields
pub preconfirmations: PreconfirmationMode,
pub canonical_head_poll_interval: Duration,
pub flashblock_poll_interval: Duration,
pub max_consecutive_flashblock_poll_failures: usize,
pub max_pending_transaction_receipts_per_tick: usize,
pub max_flashblock_rpc_requests_per_second: usize,
pub hydrate_pending_transactions: bool,
pub verify_log_block_context: bool,
pub max_batch_size: usize,
pub max_log_addresses_per_subscription: usize,
pub max_pending_records: usize,
pub max_pending_backfills: usize,
pub max_backfill_log_bytes: usize,
pub max_reconcile_requests_in_flight: usize,
pub reconnect: SubscriberReconnectConfig,
}Expand description
Subscriber configuration.
Fields§
§preconfirmations: PreconfirmationModeFlashblocks delivery policy. Provider support itself is configured by
the transport’s single flashblocks endpoint flag.
canonical_head_poll_interval: DurationCadence for certifying sealed canonical heads while connected to a
Flashblocks endpoint whose newHeads stream may contain partial heads.
flashblock_poll_interval: DurationOptimism pending-state sampling cadence.
Base uses native newFlashblocks plus pendingLogs. Optimism providers
currently expose the interoperable Flashblocks surface through
pending RPC reads, so one generation-pinned sampler reads the
cumulative pending block, its exact hash-addressed parent, filtered
pending-block logs, and bounded exact transaction receipts.
max_consecutive_flashblock_poll_failures: usizeConsecutive pending-state request failure allowance.
A successful sampling tick resets this counter. Semantic integrity failures, such as non-monotonic transaction membership or malformed logs, are never retried through this allowance.
max_pending_transaction_receipts_per_tick: usizeMaximum pending receipts per sampling tick.
Receipts are requested by exact transaction hash in one JSON-RPC batch,
because separate eth_getBlockReceipts("pending") responses can refer
to a different cumulative Flashblock. The rolling total-method budget
may impose a lower effective per-tick limit; with the defaults and one
log filter, at most seven receipts are requested per tick.
max_flashblock_rpc_requests_per_second: usizePending-state RPC method budget per rolling one-second window.
The sampler reserves capacity for the pending-block, exact-parent, and filtered-log methods implied by its cadence and filter plan, plus the exact-parent canonical-head poll when block interests require it. Exact receipt hydration uses only an evenly apportioned remainder. Request timestamps enforce the ceiling across actual ticks, including delayed ticks. The default leaves headroom below common paid-provider limits of 50 requests per second.
hydrate_pending_transactions: boolHydrate pending transaction hashes into full bodies when possible.
verify_log_block_context: boolVerify each canonical log’s block identity through RPC and enrich its context with the exact parent hash before delivery.
Enable this when a strict coordinator (such as a hybrid historical/live
source) must prove canonical ancestry from log-only pubsub events.
Verification is cached per block, so the provider is queried at most
once for each distinct canonical block retained in the dedupe window.
For high-volume pubsub filters, configure
AlloySubscriber::with_log_verification_provider with a separate HTTP
provider so verification responses cannot be starved by notifications.
max_batch_size: usizeMaximum records to emit per batch.
max_log_addresses_per_subscription: usizeMaximum distinct contract addresses placed in one provider-side log subscription. Compatible logical owner filters are fanned into address supersets up to this limit; exact owner routing still happens locally.
max_pending_records: usizeMaximum records retained across the delivery queue and hidden transaction-aware reconcile buffer. Exceeding it fails the subscriber closed until a full interest reset, because dropping an event would create an unknowable continuity gap.
max_pending_backfills: usizeMaximum lazy owner-backfill requests retained at once.
max_backfill_log_bytes: usizeMaximum approximate encoded bytes accepted from one historical log response (fixed log identity fields, topics, and data).
max_reconcile_requests_in_flight: usizeMaximum provider log requests concurrently in flight during bulk owner reconciliation.
reconnect: SubscriberReconnectConfigReconnect policy for WebSocket/pubsub streams.
Trait Implementations§
Source§impl Clone for SubscriberConfig
impl Clone for SubscriberConfig
Source§fn clone(&self) -> SubscriberConfig
fn clone(&self) -> SubscriberConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SubscriberConfig
impl Debug for SubscriberConfig
Source§impl Default for SubscriberConfig
impl Default for SubscriberConfig
impl Eq for SubscriberConfig
Source§impl PartialEq for SubscriberConfig
impl PartialEq for SubscriberConfig
impl StructuralPartialEq for SubscriberConfig
Auto Trait Implementations§
impl Freeze for SubscriberConfig
impl RefUnwindSafe for SubscriberConfig
impl Send for SubscriberConfig
impl Sync for SubscriberConfig
impl Unpin for SubscriberConfig
impl UnsafeUnpin for SubscriberConfig
impl UnwindSafe for SubscriberConfig
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§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 moreSource§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 moreSource§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
Source§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
Source§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.Source§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.Source§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.Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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 moreSource§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.Source§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.Source§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.Source§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.Source§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.Source§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.Source§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.