diff --git a/src/bitcoin-tx.cpp b/src/bitcoin-tx.cpp index 437acac64..4632977eb 100644 --- a/src/bitcoin-tx.cpp +++ b/src/bitcoin-tx.cpp @@ -499,7 +499,7 @@ static void MutateTxSign(CMutableTransaction& tx, const string& flagStr) // ... and merge in other signatures: BOOST_FOREACH(const CTransaction& txv, txVariants) { - txin.scriptSig = CombineSignatures(prevPubKey, mergedTx, i, amount, txin.scriptSig, txv.vin[i].scriptSig); + txin.scriptSig = CombineSignatures(prevPubKey, MutableTransactionSignatureChecker(&mergedTx, i, amount), txin.scriptSig, txv.vin[i].scriptSig); } if (!VerifyScript(txin.scriptSig, prevPubKey, STANDARD_SCRIPT_VERIFY_FLAGS, MutableTransactionSignatureChecker(&mergedTx, i, amount))) fComplete = false; diff --git a/src/main.cpp b/src/main.cpp index b4cef6e40..d5e843b97 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1119,12 +1119,12 @@ bool AcceptToMemoryPoolWorker(CTxMemPool& pool, CValidationState& state, const C { COutPoint outpoint = txin.prevout; // A respend is a tx that conflicts with a member of the pool - auto itConflicting = pool.mapNextTx.find(txin.prevout); + auto itConflicting = pool.mapNextTx.find(outpoint); if (itConflicting != pool.mapNextTx.end()) { fRespend = true; // Relay only one tx per respent outpoint, but not if tx is equivalent to pool member - if (!doubleSpendFilter.contains(outpoint) && !tx.IsEquivalentTo(*pool.mapNextTx[outpoint].ptx)) + if (!doubleSpendFilter.contains(outpoint) && !tx.IsEquivalentTo(*itConflicting->second)) { relayForOutpoint = outpoint; break;