|
|
|
@ -1040,7 +1040,7 @@ MempoolAcceptResult MemPoolAccept::AcceptSingleTransaction(const CTransactionRef
|
|
|
|
|
|
|
|
|
|
Workspace ws(ptx);
|
|
|
|
|
|
|
|
|
|
if (!PreChecks(args, ws)) return MempoolAcceptResult(ws.m_state);
|
|
|
|
|
if (!PreChecks(args, ws)) return MempoolAcceptResult::Failure(ws.m_state);
|
|
|
|
|
|
|
|
|
|
// Only compute the precomputed transaction data if we need to verify
|
|
|
|
|
// scripts (ie, other policy checks pass). We perform the inexpensive
|
|
|
|
@ -1048,20 +1048,20 @@ MempoolAcceptResult MemPoolAccept::AcceptSingleTransaction(const CTransactionRef
|
|
|
|
|
// checks pass, to mitigate CPU exhaustion denial-of-service attacks.
|
|
|
|
|
PrecomputedTransactionData txdata;
|
|
|
|
|
|
|
|
|
|
if (!PolicyScriptChecks(args, ws, txdata)) return MempoolAcceptResult(ws.m_state);
|
|
|
|
|
if (!PolicyScriptChecks(args, ws, txdata)) return MempoolAcceptResult::Failure(ws.m_state);
|
|
|
|
|
|
|
|
|
|
if (!ConsensusScriptChecks(args, ws, txdata)) return MempoolAcceptResult(ws.m_state);
|
|
|
|
|
if (!ConsensusScriptChecks(args, ws, txdata)) return MempoolAcceptResult::Failure(ws.m_state);
|
|
|
|
|
|
|
|
|
|
// Tx was accepted, but not added
|
|
|
|
|
if (args.m_test_accept) {
|
|
|
|
|
return MempoolAcceptResult(std::move(ws.m_replaced_transactions), ws.m_base_fees);
|
|
|
|
|
return MempoolAcceptResult::Success(std::move(ws.m_replaced_transactions), ws.m_base_fees);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!Finalize(args, ws)) return MempoolAcceptResult(ws.m_state);
|
|
|
|
|
if (!Finalize(args, ws)) return MempoolAcceptResult::Failure(ws.m_state);
|
|
|
|
|
|
|
|
|
|
GetMainSignals().TransactionAddedToMempool(ptx, m_pool.GetAndIncrementSequence());
|
|
|
|
|
|
|
|
|
|
return MempoolAcceptResult(std::move(ws.m_replaced_transactions), ws.m_base_fees);
|
|
|
|
|
return MempoolAcceptResult::Success(std::move(ws.m_replaced_transactions), ws.m_base_fees);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // anon namespace
|
|
|
|
|