Struct RunningNode

Source
pub struct RunningNode {
    pub(crate) last_address_rearrange: Instant,
    pub(crate) last_invs: HashMap<BlockHash, (Instant, Vec<u32>)>,
    pub(crate) inflight_filters: BTreeMap<u32, BlockFilter>,
}

Fields§

§last_address_rearrange: Instant§last_invs: HashMap<BlockHash, (Instant, Vec<u32>)>

To find peers with a good connectivity, keep track of what peers sent us an inv message for a block, in the first 5 seconds after we get the first inv message. If we ever decide to disconnect a peer, we should disconnect the ones that didn’t send us an inv message in a timely manner, but keep the ones that notified us of a new blocks the fastest. We also keep the moment we received the first inv message

§inflight_filters: BTreeMap<u32, BlockFilter>

Trait Implementations§

Source§

impl Clone for RunningNode

Source§

fn clone(&self) -> RunningNode

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RunningNode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for RunningNode

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl NodeContext for RunningNode

Source§

const REQUEST_TIMEOUT: u64 = 120u64

How long we wait for a peer to respond to our request
Source§

fn get_required_services(&self) -> ServiceFlags

Source§

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

We ask for peers every ASK_FOR_PEERS_INTERVAL seconds
Source§

const PEER_DB_DUMP_INTERVAL: u64 = 30u64

Save our database of peers every PEER_DB_DUMP_INTERVAL seconds
Source§

const TRY_NEW_CONNECTION: u64 = 10u64

Attempt to open a new connection (if needed) every TRY_NEW_CONNECTION seconds
Source§

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

While on IBD, if we’ve been without blocks for this long, ask for headers again
Source§

const MAX_INFLIGHT_REQUESTS: usize = 1_000usize

Max number of simultaneous inflight requests we allow
Source§

const FEELER_INTERVAL: u64 = 30u64

Interval at which we open new feeler connections
Source§

const ADDRESS_REARRANGE_INTERVAL: u64 = 3_600u64

Interval at which we rearrange our addresses
Source§

const BAN_TIME: u64 = 86_400u64

How long we ban a peer for
Source§

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

How often we send our addresses to our peers
Source§

const CONNECTION_TIMEOUT: u64 = 10u64

How long should we wait for a peer to respond our connection request. This shouldn’t be greater than TRY_NEW_CONNECTION in order to clear timed-out requests at the same pace.
Source§

const BLOCKS_PER_GETDATA: usize = 5usize

How many blocks we can ask in the same request
Source§

const MAX_CONCURRENT_GETDATA: usize = 10usize

How many concurrent GETDATA packages we can send at the same time
Source§

const MAINTENANCE_TICK: Duration = _

How often we perform the main loop maintenance tasks (checking for timeouts, peers, etc.)
Source§

const NEW_CONNECTIONS_BATCH_SIZE: usize = 4usize

How many connections we try at once

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more