|
|
|
@ -657,6 +657,7 @@ void CTxMemPool::check(const CCoinsViewCache *pcoins) const
@@ -657,6 +657,7 @@ void CTxMemPool::check(const CCoinsViewCache *pcoins) const
|
|
|
|
|
uint64_t innerUsage = 0; |
|
|
|
|
|
|
|
|
|
CCoinsViewCache mempoolDuplicate(const_cast<CCoinsViewCache*>(pcoins)); |
|
|
|
|
const int64_t nSpendHeight = GetSpendHeight(mempoolDuplicate); |
|
|
|
|
|
|
|
|
|
LOCK(cs); |
|
|
|
|
list<const CTxMemPoolEntry*> waitingOnDependants; |
|
|
|
@ -737,7 +738,9 @@ void CTxMemPool::check(const CCoinsViewCache *pcoins) const
@@ -737,7 +738,9 @@ void CTxMemPool::check(const CCoinsViewCache *pcoins) const
|
|
|
|
|
waitingOnDependants.push_back(&(*it)); |
|
|
|
|
else { |
|
|
|
|
CValidationState state; |
|
|
|
|
assert(CheckInputs(tx, state, mempoolDuplicate, false, 0, false, NULL)); |
|
|
|
|
bool fCheckResult = tx.IsCoinBase() || |
|
|
|
|
Consensus::CheckTxInputs(tx, state, mempoolDuplicate, nSpendHeight); |
|
|
|
|
assert(fCheckResult); |
|
|
|
|
UpdateCoins(tx, mempoolDuplicate, 1000000); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -751,7 +754,9 @@ void CTxMemPool::check(const CCoinsViewCache *pcoins) const
@@ -751,7 +754,9 @@ void CTxMemPool::check(const CCoinsViewCache *pcoins) const
|
|
|
|
|
stepsSinceLastRemove++; |
|
|
|
|
assert(stepsSinceLastRemove < waitingOnDependants.size()); |
|
|
|
|
} else { |
|
|
|
|
assert(CheckInputs(entry->GetTx(), state, mempoolDuplicate, false, 0, false, NULL)); |
|
|
|
|
bool fCheckResult = entry->GetTx().IsCoinBase() || |
|
|
|
|
Consensus::CheckTxInputs(entry->GetTx(), state, mempoolDuplicate, nSpendHeight); |
|
|
|
|
assert(fCheckResult); |
|
|
|
|
UpdateCoins(entry->GetTx(), mempoolDuplicate, 1000000); |
|
|
|
|
stepsSinceLastRemove = 0; |
|
|
|
|
} |
|
|
|
|