Bitcoin Core 28.99.0
P2P Digital Currency
|
#include <net_processing.h>
#include <addrman.h>
#include <banman.h>
#include <blockencodings.h>
#include <blockfilter.h>
#include <chainparams.h>
#include <consensus/amount.h>
#include <consensus/validation.h>
#include <deploymentstatus.h>
#include <hash.h>
#include <headerssync.h>
#include <index/blockfilterindex.h>
#include <kernel/chain.h>
#include <kernel/mempool_entry.h>
#include <logging.h>
#include <merkleblock.h>
#include <netbase.h>
#include <netmessagemaker.h>
#include <node/blockstorage.h>
#include <node/timeoffsets.h>
#include <node/txdownloadman.h>
#include <node/txreconciliation.h>
#include <node/warnings.h>
#include <policy/fees.h>
#include <policy/policy.h>
#include <policy/settings.h>
#include <primitives/block.h>
#include <primitives/transaction.h>
#include <random.h>
#include <scheduler.h>
#include <streams.h>
#include <sync.h>
#include <tinyformat.h>
#include <txmempool.h>
#include <txorphanage.h>
#include <txrequest.h>
#include <util/check.h>
#include <util/strencodings.h>
#include <util/time.h>
#include <util/trace.h>
#include <validation.h>
#include <algorithm>
#include <atomic>
#include <future>
#include <memory>
#include <optional>
#include <ranges>
#include <typeinfo>
#include <utility>
Go to the source code of this file.
Functions | |
TRACEPOINT_SEMAPHORE (net, inbound_message) | |
Variables | |
static constexpr auto | HEADERS_DOWNLOAD_TIMEOUT_BASE = 15min |
Headers download timeout. More... | |
static constexpr auto | HEADERS_DOWNLOAD_TIMEOUT_PER_HEADER = 1ms |
static constexpr auto | HEADERS_RESPONSE_TIME {2min} |
How long to wait for a peer to respond to a getheaders request. More... | |
static constexpr int32_t | MAX_OUTBOUND_PEERS_TO_PROTECT_FROM_DISCONNECT = 4 |
Protect at least this many outbound peers from disconnection due to slow/ behind headers chain. More... | |
static constexpr auto | CHAIN_SYNC_TIMEOUT {20min} |
Timeout for (unprotected) outbound peers to sync to our chainwork. More... | |
static constexpr auto | STALE_CHECK_INTERVAL {10min} |
How frequently to check for stale tips. More... | |
static constexpr auto | EXTRA_PEER_CHECK_INTERVAL {45s} |
How frequently to check for extra outbound peers and disconnect. More... | |
static constexpr auto | MINIMUM_CONNECT_TIME {30s} |
Minimum time an outbound-peer-eviction candidate must be connected for, in order to evict. More... | |
static constexpr uint64_t | RANDOMIZER_ID_ADDRESS_RELAY = 0x3cac0035b5866b90ULL |
SHA256("main address relay")[0:8]. More... | |
static constexpr int | STALE_RELAY_AGE_LIMIT = 30 * 24 * 60 * 60 |
Age after which a stale block will no longer be served if requested as protection against fingerprinting. More... | |
static constexpr int | HISTORICAL_BLOCK_AGE = 7 * 24 * 60 * 60 |
Age after which a block is considered historical for purposes of rate limiting block relay. More... | |
static constexpr auto | PING_INTERVAL {2min} |
Time between pings automatically sent out for latency probing and keepalive. More... | |
static const unsigned int | MAX_LOCATOR_SZ = 101 |
The maximum number of entries in a locator. More... | |
static const unsigned int | MAX_INV_SZ = 50000 |
The maximum number of entries in an 'inv' protocol message. More... | |
static const unsigned int | MAX_GETDATA_SZ = 1000 |
Limit to avoid sending big packets. More... | |
static const int | MAX_BLOCKS_IN_TRANSIT_PER_PEER = 16 |
Number of blocks that can be requested at any given time from a single peer. More... | |
static constexpr auto | BLOCK_STALLING_TIMEOUT_DEFAULT {2s} |
Default time during which a peer must stall block download progress before being disconnected. More... | |
static constexpr auto | BLOCK_STALLING_TIMEOUT_MAX {64s} |
Maximum timeout for stalling block download. More... | |
static const int | MAX_CMPCTBLOCK_DEPTH = 5 |
Maximum depth of blocks we're willing to serve as compact blocks to peers when requested. More... | |
static const int | MAX_BLOCKTXN_DEPTH = 10 |
Maximum depth of blocks we're willing to respond to GETBLOCKTXN requests for. More... | |
static const unsigned int | BLOCK_DOWNLOAD_WINDOW = 1024 |
Size of the "block download window": how far ahead of our current height do we fetch? Larger windows tolerate larger download speed differences between peer, but increase the potential degree of disordering of blocks on disk (which make reindexing and pruning harder). More... | |
static constexpr double | BLOCK_DOWNLOAD_TIMEOUT_BASE = 1 |
Block download timeout base, expressed in multiples of the block interval (i.e. More... | |
static constexpr double | BLOCK_DOWNLOAD_TIMEOUT_PER_PEER = 0.5 |
Additional block download timeout per parallel downloading peer (i.e. More... | |
static const unsigned int | MAX_BLOCKS_TO_ANNOUNCE = 8 |
Maximum number of headers to announce when relaying blocks with headers message. More... | |
static const unsigned int | NODE_NETWORK_LIMITED_MIN_BLOCKS = 288 |
Minimum blocks required to signal NODE_NETWORK_LIMITED. More... | |
static const unsigned int | NODE_NETWORK_LIMITED_ALLOW_CONN_BLOCKS = 144 |
Window, in blocks, for connecting to NODE_NETWORK_LIMITED peers. More... | |
static constexpr auto | AVG_LOCAL_ADDRESS_BROADCAST_INTERVAL {24h} |
Average delay between local address broadcasts. More... | |
static constexpr auto | AVG_ADDRESS_BROADCAST_INTERVAL {30s} |
Average delay between peer address broadcasts. More... | |
static constexpr auto | ROTATE_ADDR_RELAY_DEST_INTERVAL {24h} |
Delay between rotating the peers we relay a particular address to. More... | |
static constexpr auto | INBOUND_INVENTORY_BROADCAST_INTERVAL {5s} |
Average delay between trickled inventory transmissions for inbound peers. More... | |
static constexpr auto | OUTBOUND_INVENTORY_BROADCAST_INTERVAL {2s} |
Average delay between trickled inventory transmissions for outbound peers. More... | |
static constexpr unsigned int | INVENTORY_BROADCAST_PER_SECOND = 7 |
Maximum rate of inventory items to send per second. More... | |
static constexpr unsigned int | INVENTORY_BROADCAST_TARGET = INVENTORY_BROADCAST_PER_SECOND * count_seconds(INBOUND_INVENTORY_BROADCAST_INTERVAL) |
Target number of tx inventory items to send per transmission. More... | |
static constexpr unsigned int | INVENTORY_BROADCAST_MAX = 1000 |
Maximum number of inventory items to send per transmission. More... | |
static constexpr auto | AVG_FEEFILTER_BROADCAST_INTERVAL {10min} |
Average delay between feefilter broadcasts in seconds. More... | |
static constexpr auto | MAX_FEEFILTER_CHANGE_DELAY {5min} |
Maximum feefilter broadcast delay after significant change. More... | |
static constexpr uint32_t | MAX_GETCFILTERS_SIZE = 1000 |
Maximum number of compact filters that may be requested with one getcfilters. More... | |
static constexpr uint32_t | MAX_GETCFHEADERS_SIZE = 2000 |
Maximum number of cf hashes that may be requested with one getcfheaders. More... | |
static constexpr size_t | MAX_PCT_ADDR_TO_SEND = 23 |
the maximum percentage of addresses from our addrman to return in response to a getaddr message. More... | |
static constexpr size_t | MAX_ADDR_TO_SEND {1000} |
The maximum number of address records permitted in an ADDR message. More... | |
static constexpr double | MAX_ADDR_RATE_PER_SECOND {0.1} |
The maximum rate of address records we're willing to process on average. More... | |
static constexpr size_t | MAX_ADDR_PROCESSING_TOKEN_BUCKET {MAX_ADDR_TO_SEND} |
The soft limit of the address processing token bucket (the regular MAX_ADDR_RATE_PER_SECOND based increments won't go above this, but the MAX_ADDR_TO_SEND increment following GETADDR is exempt from this limit). More... | |
static constexpr uint64_t | CMPCTBLOCKS_VERSION {2} |
The compactblocks version we support. More... | |
TRACEPOINT_SEMAPHORE | ( | net | , |
inbound_message | |||
) |
|
staticconstexpr |
Average delay between peer address broadcasts.
Definition at line 127 of file net_processing.cpp.
|
staticconstexpr |
Average delay between feefilter broadcasts in seconds.
Definition at line 147 of file net_processing.cpp.
|
staticconstexpr |
Average delay between local address broadcasts.
Definition at line 125 of file net_processing.cpp.
|
staticconstexpr |
Block download timeout base, expressed in multiples of the block interval (i.e.
10 min)
Definition at line 115 of file net_processing.cpp.
|
staticconstexpr |
Additional block download timeout per parallel downloading peer (i.e.
5 min)
Definition at line 117 of file net_processing.cpp.
|
static |
Size of the "block download window": how far ahead of our current height do we fetch? Larger windows tolerate larger download speed differences between peer, but increase the potential degree of disordering of blocks on disk (which make reindexing and pruning harder).
We'll probably want to make this a per-peer adaptive value at some point.
Definition at line 113 of file net_processing.cpp.
|
staticconstexpr |
Default time during which a peer must stall block download progress before being disconnected.
the actual timeout is increased temporarily if peers are disconnected for hitting the timeout
Definition at line 100 of file net_processing.cpp.
|
staticconstexpr |
Maximum timeout for stalling block download.
Definition at line 102 of file net_processing.cpp.
|
staticconstexpr |
Timeout for (unprotected) outbound peers to sync to our chainwork.
Definition at line 73 of file net_processing.cpp.
|
staticconstexpr |
The compactblocks version we support.
See BIP 152.
Definition at line 166 of file net_processing.cpp.
|
staticconstexpr |
How frequently to check for extra outbound peers and disconnect.
Definition at line 77 of file net_processing.cpp.
|
staticconstexpr |
Headers download timeout.
Timeout = base + per_header * (expected number of headers)
Definition at line 64 of file net_processing.cpp.
|
staticconstexpr |
Definition at line 65 of file net_processing.cpp.
|
staticconstexpr |
How long to wait for a peer to respond to a getheaders request.
Definition at line 67 of file net_processing.cpp.
|
staticconstexpr |
Age after which a block is considered historical for purposes of rate limiting block relay.
Set to one week, denominated in seconds.
Definition at line 87 of file net_processing.cpp.
|
staticconstexpr |
Average delay between trickled inventory transmissions for inbound peers.
Blocks and peers with NetPermissionFlags::NoBan permission bypass this.
Definition at line 132 of file net_processing.cpp.
|
staticconstexpr |
Maximum number of inventory items to send per transmission.
Definition at line 143 of file net_processing.cpp.
|
staticconstexpr |
Maximum rate of inventory items to send per second.
Limits the impact of low-fee transaction floods.
Definition at line 139 of file net_processing.cpp.
|
staticconstexpr |
Target number of tx inventory items to send per transmission.
Definition at line 141 of file net_processing.cpp.
|
staticconstexpr |
The soft limit of the address processing token bucket (the regular MAX_ADDR_RATE_PER_SECOND based increments won't go above this, but the MAX_ADDR_TO_SEND increment following GETADDR is exempt from this limit).
Definition at line 164 of file net_processing.cpp.
|
staticconstexpr |
The maximum rate of address records we're willing to process on average.
Can be bypassed using the NetPermissionFlags::Addr permission.
Definition at line 160 of file net_processing.cpp.
|
staticconstexpr |
The maximum number of address records permitted in an ADDR message.
Definition at line 157 of file net_processing.cpp.
|
static |
Number of blocks that can be requested at any given time from a single peer.
Definition at line 97 of file net_processing.cpp.
|
static |
Maximum number of headers to announce when relaying blocks with headers message.
Definition at line 119 of file net_processing.cpp.
|
static |
Maximum depth of blocks we're willing to respond to GETBLOCKTXN requests for.
Definition at line 107 of file net_processing.cpp.
|
static |
Maximum depth of blocks we're willing to serve as compact blocks to peers when requested.
For older blocks, a regular BLOCK response will be sent.
Definition at line 105 of file net_processing.cpp.
|
staticconstexpr |
Maximum feefilter broadcast delay after significant change.
Definition at line 149 of file net_processing.cpp.
|
staticconstexpr |
Maximum number of cf hashes that may be requested with one getcfheaders.
See BIP 157.
Definition at line 153 of file net_processing.cpp.
|
staticconstexpr |
Maximum number of compact filters that may be requested with one getcfilters.
See BIP 157.
Definition at line 151 of file net_processing.cpp.
|
static |
Limit to avoid sending big packets.
Not used in processing incoming GETDATA for compatibility
Definition at line 95 of file net_processing.cpp.
|
static |
The maximum number of entries in an 'inv' protocol message.
Definition at line 93 of file net_processing.cpp.
|
static |
The maximum number of entries in a locator.
Definition at line 91 of file net_processing.cpp.
|
staticconstexpr |
Protect at least this many outbound peers from disconnection due to slow/ behind headers chain.
Definition at line 71 of file net_processing.cpp.
|
staticconstexpr |
the maximum percentage of addresses from our addrman to return in response to a getaddr message.
Definition at line 155 of file net_processing.cpp.
|
staticconstexpr |
Minimum time an outbound-peer-eviction candidate must be connected for, in order to evict.
Definition at line 79 of file net_processing.cpp.
|
static |
Window, in blocks, for connecting to NODE_NETWORK_LIMITED peers.
Definition at line 123 of file net_processing.cpp.
|
static |
Minimum blocks required to signal NODE_NETWORK_LIMITED.
Definition at line 121 of file net_processing.cpp.
|
staticconstexpr |
Average delay between trickled inventory transmissions for outbound peers.
Use a smaller delay as there is less privacy concern for them. Blocks and peers with NetPermissionFlags::NoBan permission bypass this.
Definition at line 136 of file net_processing.cpp.
|
staticconstexpr |
Time between pings automatically sent out for latency probing and keepalive.
Definition at line 89 of file net_processing.cpp.
|
staticconstexpr |
SHA256("main address relay")[0:8].
Definition at line 81 of file net_processing.cpp.
|
staticconstexpr |
Delay between rotating the peers we relay a particular address to.
Definition at line 129 of file net_processing.cpp.
|
staticconstexpr |
How frequently to check for stale tips.
Definition at line 75 of file net_processing.cpp.
|
staticconstexpr |
Age after which a stale block will no longer be served if requested as protection against fingerprinting.
Set to one month, denominated in seconds.
Definition at line 84 of file net_processing.cpp.