aboutsummaryrefslogtreecommitdiff
path: root/src/txmempool.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/txmempool.h')
-rw-r--r--src/txmempool.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/txmempool.h b/src/txmempool.h
index a1867eb895..4e68b711a2 100644
--- a/src/txmempool.h
+++ b/src/txmempool.h
@@ -839,15 +839,27 @@ class CCoinsViewMemPool : public CCoinsViewBacked
* validation, since we can access transaction outputs without submitting them to mempool.
*/
std::unordered_map<COutPoint, Coin, SaltedOutpointHasher> m_temp_added;
+
+ /**
+ * Set of all coins that have been fetched from mempool or created using PackageAddTransaction
+ * (not base). Used to track the origin of a coin, see GetNonBaseCoins().
+ */
+ mutable std::unordered_set<COutPoint, SaltedOutpointHasher> m_non_base_coins;
protected:
const CTxMemPool& mempool;
public:
CCoinsViewMemPool(CCoinsView* baseIn, const CTxMemPool& mempoolIn);
+ /** GetCoin, returning whether it exists and is not spent. Also updates m_non_base_coins if the
+ * coin is not fetched from base. */
bool GetCoin(const COutPoint &outpoint, Coin &coin) const override;
/** Add the coins created by this transaction. These coins are only temporarily stored in
* m_temp_added and cannot be flushed to the back end. Only used for package validation. */
void PackageAddTransaction(const CTransactionRef& tx);
+ /** Get all coins in m_non_base_coins. */
+ std::unordered_set<COutPoint, SaltedOutpointHasher> GetNonBaseCoins() const { return m_non_base_coins; }
+ /** Clear m_temp_added and m_non_base_coins. */
+ void Reset();
};
/**