@@ -1404,6 +1404,12 @@ void UpdateCoins(const CTransaction& tx, CValidationState &state, CCoinsViewCach | |||
inputs.ModifyCoins(tx.GetHash())->FromTx(tx, nHeight); | |||
} | |||
void UpdateCoins(const CTransaction& tx, CValidationState &state, CCoinsViewCache &inputs, int nHeight) | |||
{ | |||
CTxUndo txundo; | |||
UpdateCoins(tx, state, inputs, txundo, nHeight); | |||
} | |||
bool CScriptCheck::operator()() { | |||
const CScript &scriptSig = ptxTo->vin[nIn].scriptSig; | |||
if (!VerifyScript(scriptSig, scriptPubKey, nFlags, CachingSignatureChecker(*ptxTo, nIn, cacheStore), &error)) { |
@@ -290,7 +290,7 @@ bool CheckInputs(const CTransaction& tx, CValidationState &state, const CCoinsVi | |||
unsigned int flags, bool cacheStore, std::vector<CScriptCheck> *pvChecks = NULL); | |||
/** Apply the effects of this transaction on the UTXO set represented by view */ | |||
void UpdateCoins(const CTransaction& tx, CValidationState &state, CCoinsViewCache &inputs, CTxUndo &txundo, int nHeight); | |||
void UpdateCoins(const CTransaction& tx, CValidationState &state, CCoinsViewCache &inputs, int nHeight); | |||
/** Context-independent validity checks */ | |||
bool CheckTransaction(const CTransaction& tx, CValidationState& state); |
@@ -279,8 +279,7 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn) | |||
if (!CheckInputs(tx, state, view, true, MANDATORY_SCRIPT_VERIFY_FLAGS, true)) | |||
continue; | |||
CTxUndo txundo; | |||
UpdateCoins(tx, state, view, txundo, nHeight); | |||
UpdateCoins(tx, state, view, nHeight); | |||
// Added | |||
pblock->vtx.push_back(tx); |
@@ -585,9 +585,9 @@ void CTxMemPool::check(const CCoinsViewCache *pcoins) const | |||
if (fDependsWait) | |||
waitingOnDependants.push_back(&it->second); | |||
else { | |||
CValidationState state; CTxUndo undo; | |||
CValidationState state; | |||
assert(CheckInputs(tx, state, mempoolDuplicate, false, 0, false, NULL)); | |||
UpdateCoins(tx, state, mempoolDuplicate, undo, 1000000); | |||
UpdateCoins(tx, state, mempoolDuplicate, 1000000); | |||
} | |||
} | |||
unsigned int stepsSinceLastRemove = 0; | |||
@@ -601,8 +601,7 @@ void CTxMemPool::check(const CCoinsViewCache *pcoins) const | |||
assert(stepsSinceLastRemove < waitingOnDependants.size()); | |||
} else { | |||
assert(CheckInputs(entry->GetTx(), state, mempoolDuplicate, false, 0, false, NULL)); | |||
CTxUndo undo; | |||
UpdateCoins(entry->GetTx(), state, mempoolDuplicate, undo, 1000000); | |||
UpdateCoins(entry->GetTx(), state, mempoolDuplicate, 1000000); | |||
stepsSinceLastRemove = 0; | |||
} | |||
} |