From 231b399952fd620ee0f72b1947024dba9651630d Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Sat, 24 Nov 2012 14:26:51 +0100 Subject: Bugfix: remove conflicting transactions from memory pool When a transaction A is in the memory pool, while a transaction B (which shares an input with A) gets accepted into a block, A was kept forever in the memory pool. This commit adds a CTxMemPool::removeConflicts method, which removes transactions that conflict with a given transaction, and all their children. This results in less transactions in the memory pool, and faster construction of new blocks. --- src/main.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/main.h') diff --git a/src/main.h b/src/main.h index 8327141266..7a164c77fb 100644 --- a/src/main.h +++ b/src/main.h @@ -1814,7 +1814,8 @@ public: bool accept(CTransaction &tx, bool fCheckInputs, bool* pfMissingInputs); bool addUnchecked(const uint256& hash, CTransaction &tx); - bool remove(CTransaction &tx); + bool remove(const CTransaction &tx, bool fRecursive = false); + bool removeConflicts(const CTransaction &tx); void clear(); void queryHashes(std::vector& vtxid); void pruneSpent(const uint256& hash, CCoins &coins); -- cgit v1.2.3