9d55050773
The lock-time code currently uses CBlock::nTime as the cutoff point for time based locked transactions. This has the unfortunate outcome of creating a perverse incentive for miners to lie about the time of a block in order to collect more fees by including transactions that by wall clock determination have not yet matured. By using CBlockIndex::GetMedianTimePast from the prior block instead, the self-interested miner no longer gains from generating blocks with fraudulent timestamps. Users can compensate for this change by simply adding an hour (3600 seconds) to their time-based lock times. If enforced, this would be a soft-fork change. This commit only adds the functionality on an unexecuted code path, without changing the behaviour of Bitcoin Core.
23 lines
943 B
C
23 lines
943 B
C
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
// Copyright (c) 2009-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_CONSENSUS_CONSENSUS_H
|
|
#define BITCOIN_CONSENSUS_CONSENSUS_H
|
|
|
|
/** The maximum allowed size for a serialized block, in bytes (network rule) */
|
|
static const unsigned int MAX_BLOCK_SIZE = 1000000;
|
|
/** The maximum allowed number of signature check operations in a block (network rule) */
|
|
static const unsigned int MAX_BLOCK_SIGOPS = MAX_BLOCK_SIZE/50;
|
|
/** Coinbase transaction outputs can only be spent after this number of new blocks (network rule) */
|
|
static const int COINBASE_MATURITY = 100;
|
|
|
|
/** Flags for LockTime() */
|
|
enum {
|
|
/* Use GetMedianTimePast() instead of nTime for end point timestamp. */
|
|
LOCKTIME_MEDIAN_TIME_PAST = (1 << 1),
|
|
};
|
|
|
|
#endif // BITCOIN_CONSENSUS_CONSENSUS_H
|