50262d8953
This replaces using inv messages to announce new blocks, when a peer requests (via the new "sendheaders" message) that blocks be announced with headers instead of inv's. Since headers-first was introduced, peers send getheaders messages in response to an inv, which requires generating a block locator that is large compared to the size of the header being requested, and requires an extra round-trip before a reorg can be relayed. Save time by tracking headers that a peer is likely to know about, and send a headers chain that would connect to a peer's known headers, unless the chain would be too big, in which case we revert to sending an inv instead. Based off of @sipa's commit to announce all blocks in a reorg via inv, which has been squashed into this commit. Rebased-by: Pieter Wuille
43 lines
1.5 KiB
C
43 lines
1.5 KiB
C
// Copyright (c) 2012-2014 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_VERSION_H
|
|
#define BITCOIN_VERSION_H
|
|
|
|
/**
|
|
* network protocol versioning
|
|
*/
|
|
|
|
static const int PROTOCOL_VERSION = 70012;
|
|
|
|
//! initial proto version, to be increased after version/verack negotiation
|
|
static const int INIT_PROTO_VERSION = 209;
|
|
|
|
//! In this version, 'getheaders' was introduced.
|
|
static const int GETHEADERS_VERSION = 31800;
|
|
|
|
//! disconnect from peers older than this proto version
|
|
static const int MIN_PEER_PROTO_VERSION = GETHEADERS_VERSION;
|
|
|
|
//! nTime field added to CAddress, starting with this version;
|
|
//! if possible, avoid requesting addresses nodes older than this
|
|
static const int CADDR_TIME_VERSION = 31402;
|
|
|
|
//! only request blocks from nodes outside this range of versions
|
|
static const int NOBLKS_VERSION_START = 32000;
|
|
static const int NOBLKS_VERSION_END = 32400;
|
|
|
|
//! BIP 0031, pong message, is enabled for all versions AFTER this one
|
|
static const int BIP0031_VERSION = 60000;
|
|
|
|
//! "mempool" command, enhanced "getdata" behavior starts with this version
|
|
static const int MEMPOOL_GD_VERSION = 60002;
|
|
|
|
//! "filter*" commands are disabled without NODE_BLOOM after and including this version
|
|
static const int NO_BLOOM_VERSION = 70011;
|
|
|
|
//! "sendheaders" command and announcing blocks with headers starts with this version
|
|
static const int SENDHEADERS_VERSION = 70012;
|
|
|
|
#endif // BITCOIN_VERSION_H
|