diff options
author | Mark Friedenbach <mark@friedenbach.org> | 2015-06-03 12:55:45 -0700 |
---|---|---|
committer | BtcDrak <btcdrak@gmail.com> | 2015-10-23 21:33:31 +0100 |
commit | a1d3c6fb9de8a3fc3e36bc3753a6831cb1dfdbcb (patch) | |
tree | c1e715d570a58016ced625d97cf7cb9e95b06485 /src/consensus | |
parent | dfe55bdc32b5333dcce1a7f2c74628f64028d1fe (diff) | |
download | bitcoin-a1d3c6fb9de8a3fc3e36bc3753a6831cb1dfdbcb.tar.xz |
Add rules--presently disabled--for using GetMedianTimePast as endpoint for lock-time calculations
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.
Diffstat (limited to 'src/consensus')
-rw-r--r-- | src/consensus/consensus.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/consensus/consensus.h b/src/consensus/consensus.h index f937844e9f..6195d6a79f 100644 --- a/src/consensus/consensus.h +++ b/src/consensus/consensus.h @@ -13,4 +13,13 @@ 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), +}; + +/** Used as the flags parameter to CheckFinalTx() in non-consensus code */ +static const unsigned int STANDARD_LOCKTIME_VERIFY_FLAGS = 0; + #endif // BITCOIN_CONSENSUS_CONSENSUS_H |