|
|
|
@ -470,6 +470,8 @@ public:
|
|
|
|
|
*/
|
|
|
|
|
std::vector<COutPoint>& m_coins_to_uncache;
|
|
|
|
|
const bool m_test_accept;
|
|
|
|
|
/** Disable BIP125 RBFing; disallow all conflicts with mempool transactions. */
|
|
|
|
|
const bool disallow_mempool_conflicts;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Single transaction acceptance
|
|
|
|
@ -631,7 +633,7 @@ bool MemPoolAccept::PreChecks(ATMPArgs& args, Workspace& ws)
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (fReplacementOptOut) {
|
|
|
|
|
if (fReplacementOptOut || args.disallow_mempool_conflicts) {
|
|
|
|
|
return state.Invalid(TxValidationResult::TX_MEMPOOL_POLICY, "txn-mempool-conflict");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1072,7 +1074,8 @@ static MempoolAcceptResult AcceptToMemoryPoolWithTime(const CChainParams& chainp
|
|
|
|
|
EXCLUSIVE_LOCKS_REQUIRED(cs_main)
|
|
|
|
|
{
|
|
|
|
|
std::vector<COutPoint> coins_to_uncache;
|
|
|
|
|
MemPoolAccept::ATMPArgs args { chainparams, nAcceptTime, bypass_limits, coins_to_uncache, test_accept };
|
|
|
|
|
MemPoolAccept::ATMPArgs args { chainparams, nAcceptTime, bypass_limits, coins_to_uncache,
|
|
|
|
|
test_accept, /* disallow_mempool_conflicts */ false };
|
|
|
|
|
|
|
|
|
|
assert(std::addressof(::ChainstateActive()) == std::addressof(active_chainstate));
|
|
|
|
|
const MempoolAcceptResult result = MemPoolAccept(pool, active_chainstate).AcceptSingleTransaction(tx, args);
|
|
|
|
|