bool CCoinsViewCache::HaveInputs(const CTransaction& tx) const { if (!tx.IsCoinBase() && !tx.IsZerocoinSpend()) { for (unsigned int i = 0; i < tx.vin.size(); i++) { const COutPoint& prevout = tx.vin[i].prevout; const CCoins* coins = AccessCoins(prevout.hash); if (!coins || !coins->IsAvailable(prevout.n)) { return false; } } } return true; }
CAmount CCoinsViewCache::GetValueIn(const CTransaction& tx) const { if (tx.IsCoinBase()) return 0; //todo are there any security precautions to take here? if (tx.IsZerocoinSpend()) return tx.GetZerocoinSpent(); CAmount nResult = 0; for (unsigned int i = 0; i < tx.vin.size(); i++) nResult += GetOutputFor(tx.vin[i]).nValue; return nResult; }