Switch CScriptCheck to use Coin instead of CCoins

This commit is contained in:
Pieter Wuille
2017-04-25 11:29:32 -07:00
parent c87b957a32
commit 8b3868c1b4
2 changed files with 12 additions and 11 deletions

View File

@@ -1116,16 +1116,16 @@ bool CheckInputs(const CTransaction& tx, CValidationState &state, const CCoinsVi
if (fScriptChecks) {
for (unsigned int i = 0; i < tx.vin.size(); i++) {
const COutPoint &prevout = tx.vin[i].prevout;
const CCoins* coins = inputs.AccessCoins(prevout.hash);
assert(coins);
const Coin& coin = inputs.AccessCoin(prevout);
assert(!coin.IsPruned());
// We very carefully only pass in things to CScriptCheck which
// are clearly committed to by tx' witness hash. This provides
// a sanity check that our caching is not introducing consensus
// failures through additional data in, eg, the coins being
// spent being checked as a part of CScriptCheck.
const CScript& scriptPubKey = coins->vout[prevout.n].scriptPubKey;
const CAmount amount = coins->vout[prevout.n].nValue;
const CScript& scriptPubKey = coin.out.scriptPubKey;
const CAmount amount = coin.out.nValue;
// Verify signature
CScriptCheck check(scriptPubKey, amount, tx, i, flags, cacheStore, &txdata);