pub struct ChainSelector { /* private fields */ }Available on non-WebAssembly only.
Expand description
A p2p driver that attempts to connect with multiple peers, ask which chain are them following and download and verify the headers, not the actual blocks. This is the first part of a loger IBD pipeline. The actual blocks should be downloaded by a SyncPeer.
Trait Implementations§
Source§impl Clone for ChainSelector
impl Clone for ChainSelector
Source§fn clone(&self) -> ChainSelector
fn clone(&self) -> ChainSelector
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ChainSelector
impl Debug for ChainSelector
Source§impl Default for ChainSelector
impl Default for ChainSelector
Source§fn default() -> ChainSelector
fn default() -> ChainSelector
Returns the “default value” for a type. Read more
Source§impl NodeContext for ChainSelector
impl NodeContext for ChainSelector
Source§const REQUEST_TIMEOUT: u64 = 60u64
const REQUEST_TIMEOUT: u64 = 60u64
How long we wait for a peer to respond to our request
Source§const TRY_NEW_CONNECTION: u64 = 10u64
const TRY_NEW_CONNECTION: u64 = 10u64
Attempt to open a new connection (if needed) every TRY_NEW_CONNECTION seconds
fn get_required_services(&self) -> ServiceFlags
Source§const MAX_OUTGOING_PEERS: usize = 10usize
const MAX_OUTGOING_PEERS: usize = 10usize
Max number of simultaneous connections we initiates we are willing to hold
Source§const ASK_FOR_PEERS_INTERVAL: u64 = 3_600u64
const ASK_FOR_PEERS_INTERVAL: u64 = 3_600u64
We ask for peers every ASK_FOR_PEERS_INTERVAL seconds
Source§const PEER_DB_DUMP_INTERVAL: u64 = 30u64
const PEER_DB_DUMP_INTERVAL: u64 = 30u64
Save our database of peers every PEER_DB_DUMP_INTERVAL seconds
Source§const ASSUME_STALE: u64 = 900u64
const ASSUME_STALE: u64 = 900u64
If ASSUME_STALE seconds passed since our last tip update, treat it as stale
Source§const IBD_REQUEST_BLOCKS_AGAIN: u64 = 30u64
const IBD_REQUEST_BLOCKS_AGAIN: u64 = 30u64
While on IBD, if we’ve been without blocks for this long, ask for headers again
Source§const BROADCAST_DELAY: u64 = 30u64
const BROADCAST_DELAY: u64 = 30u64
How often we broadcast transactions
Source§const MAX_INFLIGHT_REQUESTS: usize = 1_000usize
const MAX_INFLIGHT_REQUESTS: usize = 1_000usize
Max number of simultaneous inflight requests we allow
Source§const FEELER_INTERVAL: u64 = 30u64
const FEELER_INTERVAL: u64 = 30u64
Interval at which we open new feeler connections
Source§const ADDRESS_REARRANGE_INTERVAL: u64 = 3_600u64
const ADDRESS_REARRANGE_INTERVAL: u64 = 3_600u64
Interval at which we rearrange our addresses
Source§const BLOCK_CHECK_INTERVAL: u64 = 300u64
const BLOCK_CHECK_INTERVAL: u64 = 300u64
How often we check if we haven’t missed a block
Source§const SEND_ADDRESSES_INTERVAL: u64 = 3_600u64
const SEND_ADDRESSES_INTERVAL: u64 = 3_600u64
How often we send our addresses to our peers
Source§const CONNECTION_TIMEOUT: u64 = 30u64
const CONNECTION_TIMEOUT: u64 = 30u64
How long should we wait for a peer to respond our connection request
Source§const BLOCKS_PER_GETDATA: usize = 4usize
const BLOCKS_PER_GETDATA: usize = 4usize
How many blocks we can ask in the same request
Source§const MAX_CONCURRENT_GETDATA: usize = 2usize
const MAX_CONCURRENT_GETDATA: usize = 2usize
How many concurrent GETDATA packages we can send at the same time
Auto Trait Implementations§
impl Freeze for ChainSelector
impl RefUnwindSafe for ChainSelector
impl Send for ChainSelector
impl Sync for ChainSelector
impl Unpin for ChainSelector
impl UnwindSafe for ChainSelector
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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>
Converts
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>
Converts
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