diff options
author | Peter Todd <pete@petertodd.org> | 2015-05-25 00:48:33 -0400 |
---|---|---|
committer | Peter Todd <pete@petertodd.org> | 2015-05-27 05:51:33 -0400 |
commit | 28bf06236d3b385e95fe26a7a742395b30efd6ee (patch) | |
tree | db17592323b542a7979171d4ee4fa07204213638 /src/main.h | |
parent | e1412d3e96ff11d05d727bebedcc42698853cccc (diff) |
Fix off-by-one error w/ nLockTime in the wallet
Previously due to an off-by-one error the wallet ignored
nLockTime-by-height transactions that would be valid in the next block
even though they are accepted into the mempool. The transactions
wouldn't show up until confirmed, nor would they be included in the
unconfirmed balance. Similar to the mempool behavior fix in 665bdd3b,
the wallet code was calling IsFinalTx() directly without taking into
account the fact that doing so tells you if the transaction could have
been mined in the *current* block, rather than the next block.
To fix this we strip IsFinalTx() of non-consensus-critical
functionality, removing the default arguments, and add CheckFinalTx() to
check if a transaction will be final in the next block.
Diffstat (limited to 'src/main.h')
-rw-r--r-- | src/main.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/main.h b/src/main.h index 07a709b75c..b789ea95e8 100644 --- a/src/main.h +++ b/src/main.h @@ -334,7 +334,18 @@ bool CheckTransaction(const CTransaction& tx, CValidationState& state); */ bool IsStandardTx(const CTransaction& tx, std::string& reason); -bool IsFinalTx(const CTransaction &tx, int nBlockHeight = 0, int64_t nBlockTime = 0); +/** + * Check if transaction is final and can be included in a block with the + * specified height and time. Consensus critical. + */ +bool IsFinalTx(const CTransaction &tx, int nBlockHeight, int64_t nBlockTime); + +/** + * Check if transaction will be final in the next block to be created. + * + * Calls IsFinalTx() with current block height and appropriate block time. + */ +bool CheckFinalTx(const CTransaction &tx); /** * Closure representing one script verification |