Changeset View
Changeset View
Standalone View
Standalone View
src/net_processing.h
Show All 11 Lines | |||||
class Config; | class Config; | ||||
/** | /** | ||||
* Default for -maxorphantx, maximum number of orphan transactions kept in | * Default for -maxorphantx, maximum number of orphan transactions kept in | ||||
* memory. | * memory. | ||||
*/ | */ | ||||
static const unsigned int DEFAULT_MAX_ORPHAN_TRANSACTIONS = 100; | static const unsigned int DEFAULT_MAX_ORPHAN_TRANSACTIONS = 100; | ||||
/** Expiration time for orphan transactions in seconds */ | |||||
static const int64_t ORPHAN_TX_EXPIRE_TIME = 20 * 60; | |||||
/** Minimum time between orphan transactions expire time checks in seconds */ | |||||
static const int64_t ORPHAN_TX_EXPIRE_INTERVAL = 5 * 60; | |||||
/** | /** | ||||
* Default number of orphan+recently-replaced txn to keep around for block | * Default number of orphan+recently-replaced txn to keep around for block | ||||
* reconstruction. | * reconstruction. | ||||
*/ | */ | ||||
static const unsigned int DEFAULT_BLOCK_RECONSTRUCTION_EXTRA_TXN = 100; | static const unsigned int DEFAULT_BLOCK_RECONSTRUCTION_EXTRA_TXN = 100; | ||||
/** | |||||
* Headers download timeout expressed in microseconds. | |||||
* Timeout = base + per_header * (expected number of headers) | |||||
*/ | |||||
// 15 minutes | |||||
static constexpr int64_t HEADERS_DOWNLOAD_TIMEOUT_BASE = 15 * 60 * 1000000; | |||||
// 1ms/header | |||||
static constexpr int64_t HEADERS_DOWNLOAD_TIMEOUT_PER_HEADER = 1000; | |||||
/** | |||||
* Protect at least this many outbound peers from disconnection due to | |||||
* slow/behind headers chain. | |||||
*/ | |||||
static constexpr int32_t MAX_OUTBOUND_PEERS_TO_PROTECT_FROM_DISCONNECT = 4; | |||||
/** | |||||
* Timeout for (unprotected) outbound peers to sync to our chainwork, in | |||||
* seconds. | |||||
*/ | |||||
// 20 minutes | |||||
static constexpr int64_t CHAIN_SYNC_TIMEOUT = 20 * 60; | |||||
/** How frequently to check for stale tips, in seconds */ | |||||
// 10 minutes | |||||
static constexpr int64_t STALE_CHECK_INTERVAL = 10 * 60; | |||||
/** | |||||
* How frequently to check for extra outbound peers and disconnect, in seconds. | |||||
*/ | |||||
static constexpr int64_t EXTRA_PEER_CHECK_INTERVAL = 45; | |||||
/** | |||||
* Minimum time an outbound-peer-eviction candidate must be connected for, in | |||||
* order to evict, in seconds. | |||||
*/ | |||||
static constexpr int64_t MINIMUM_CONNECT_TIME = 30; | |||||
/** Default for BIP61 (sending reject messages) */ | /** Default for BIP61 (sending reject messages) */ | ||||
static constexpr bool DEFAULT_ENABLE_BIP61 = true; | static constexpr bool DEFAULT_ENABLE_BIP61 = true; | ||||
/** Enable BIP61 (sending reject messages) */ | |||||
extern bool g_enable_bip61; | |||||
class PeerLogicValidation final : public CValidationInterface, | class PeerLogicValidation final : public CValidationInterface, | ||||
public NetEventsInterface { | public NetEventsInterface { | ||||
private: | private: | ||||
CConnman *const connman; | CConnman *const connman; | ||||
public: | public: | ||||
explicit PeerLogicValidation(CConnman *connman, CScheduler &scheduler); | explicit PeerLogicValidation(CConnman *connman, CScheduler &scheduler, | ||||
bool enable_bip61); | |||||
/** | /** | ||||
* Overridden from CValidationInterface. | * Overridden from CValidationInterface. | ||||
*/ | */ | ||||
void | void | ||||
BlockConnected(const std::shared_ptr<const CBlock> &pblock, | BlockConnected(const std::shared_ptr<const CBlock> &pblock, | ||||
const CBlockIndex *pindexConnected, | const CBlockIndex *pindexConnected, | ||||
const std::vector<CTransactionRef> &vtxConflicted) override; | const std::vector<CTransactionRef> &vtxConflicted) override; | ||||
▲ Show 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | public: | ||||
* If we have extra outbound peers, try to disconnect the one with the | * If we have extra outbound peers, try to disconnect the one with the | ||||
* oldest block announcement. | * oldest block announcement. | ||||
*/ | */ | ||||
void EvictExtraOutboundPeers(int64_t time_in_seconds); | void EvictExtraOutboundPeers(int64_t time_in_seconds); | ||||
private: | private: | ||||
//! Next time to check for stale tip | //! Next time to check for stale tip | ||||
int64_t m_stale_tip_check_time; | int64_t m_stale_tip_check_time; | ||||
/** Enable BIP61 (sending reject messages) */ | |||||
const bool m_enable_bip61; | |||||
}; | }; | ||||
struct CNodeStateStats { | struct CNodeStateStats { | ||||
int nMisbehavior = 0; | int nMisbehavior = 0; | ||||
int nSyncHeight = -1; | int nSyncHeight = -1; | ||||
int nCommonHeight = -1; | int nCommonHeight = -1; | ||||
std::vector<int> vHeightInFlight; | std::vector<int> vHeightInFlight; | ||||
}; | }; | ||||
/** Get statistics from node state */ | /** Get statistics from node state */ | ||||
bool GetNodeStateStats(NodeId nodeid, CNodeStateStats &stats); | bool GetNodeStateStats(NodeId nodeid, CNodeStateStats &stats); | ||||
/** Increase a node's misbehavior score. */ | /** Increase a node's misbehavior score. */ | ||||
void Misbehaving(NodeId nodeid, int howmuch, const std::string &reason); | void Misbehaving(NodeId nodeid, int howmuch, const std::string &reason = ""); | ||||
#endif // BITCOIN_NET_PROCESSING_H | #endif // BITCOIN_NET_PROCESSING_H |