pub enum ConnectionType {
    INBOUND,
    OUTBOUND_FULL_RELAY,
    MANUAL,
    FEELER,
    BLOCK_RELAY,
    ADDR_FETCH,
}
Expand description

| Different types of connections to a | peer. This enum encapsulates the information | we have available at the time of opening | or accepting the connection. Aside | from INBOUND, all types are initiated | by us. | | If adding or removing types, please | update CONNECTION_TYPE_DOC in src/rpc/net.cpp | and src/qt/rpcconsole.cpp, as well | as the descriptions in src/qt/guiutil.cpp | and src/bitcoin-cli.cpp::NetinfoRequestHandler. |

Variants§

§

INBOUND

| Inbound connections are those initiated | by a peer. This is the only property we | know at the time of connection, until | | P2P messages are exchanged. |

§

OUTBOUND_FULL_RELAY

| These are the default connections that | we use to connect with the network. There | is no restriction on what is relayed; | by default we relay blocks, addresses | & transactions. We automatically attempt | to open | | MAX_OUTBOUND_FULL_RELAY_CONNECTIONS | using addresses from our AddrMan. |

§

MANUAL

| We open manual connections to addresses | that users explicitly requested via | the addnode RPC or the -addnode/-connect | configuration options. Even if a manual | connection is misbehaving, we do not | automatically disconnect or add it | to our discouragement filter. |

§

FEELER

| Feeler connections are short-lived | connections made to check that a node | is alive. They can be useful for: | | - test-before-evict: if one of the peers | is considered for eviction from our | AddrMan because another peer is mapped | to the same slot in the tried table, evict | only if this longer-known peer is offline. | | - move node addresses from New to Tried | table, so that we have more connectable | addresses in our AddrMan. | | ———– | @note | | in the literature (“Eclipse Attacks | on Bitcoin’s Peer-to-Peer Network”) | only the latter feature is referred | to as “feeler connections”, although | in our codebase feeler connections | encompass test-before-evict as well. | | We make these connections approximately | every FEELER_INTERVAL: first we resolve | previously found collisions if they | exist (test-before-evict), otherwise | we connect to a node from the new table. |

§

BLOCK_RELAY

| We use block-relay-only connections to | help prevent against partition attacks. | | By not relaying transactions or addresses, | these connections are harder to detect by | a third party, thus helping obfuscate the | network topology. | | We automatically attempt to open | MAX_BLOCK_RELAY_ONLY_ANCHORS using | addresses from our anchors.dat. | | Then addresses from our AddrMan if | MAX_BLOCK_RELAY_ONLY_CONNECTIONS isn’t | reached yet. |

§

ADDR_FETCH

| AddrFetch connections are short lived | connections used to solicit addresses | from peers. These are initiated to addresses | submitted via the -seednode command line | argument, or under certain conditions when the | AddrMan is empty. |

Trait Implementations§

source§

impl Clone for ConnectionType

source§

fn clone(&self) -> ConnectionType

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 Default for ConnectionType

source§

fn default() -> Self

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

impl PartialEq<ConnectionType> for ConnectionType

source§

fn eq(&self, other: &ConnectionType) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for ConnectionType

source§

impl Eq for ConnectionType

source§

impl StructuralEq for ConnectionType

source§

impl StructuralPartialEq for ConnectionType

Auto Trait Implementations§

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
§

impl<T, U> CastInto<U> for Twhere U: CastFrom<T>,

§

unsafe fn cast_into(self) -> U

Performs the conversion. Read more
source§

impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

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

const: unstable · 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> StaticUpcast<T> for T

§

unsafe fn static_upcast(ptr: Ptr<T>) -> Ptr<T>

Convert type of a const pointer. Read more
source§

impl<T> ToOwned for Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
§

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

§

fn vzip(self) -> V