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§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Returns the “default value” for a type. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Performs the conversion. Read more
Compare self to key and return true if they are equal.

Returns the argument unchanged.

Calls U::from(self).

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

The alignment of pointer.
The type for initializers.
Initializes a with the given initializer. Read more
Dereferences the given pointer. Read more
Mutably dereferences the given pointer. Read more
Drops the object pointed to by the given pointer. Read more
Convert type of a const pointer. Read more
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.