mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 18:53:23 -03:00
Merge #10558: Address nits from per-utxo change
21d4afa12
Comment clarifications in coins.cpp (Alex Morcos)3c8a9aeff
Add belt-and-suspenders in DisconnectBlock (Alex Morcos) Tree-SHA512: d83e12ed71674faaaaebc03ffa1e2276984c35a29db419268ac9e14a45b33ccab716e3606dff8cfe1dcee4bec6e4794d2ca90341f10d5684be80e3fee61addf8
This commit is contained in:
commit
90a002ea64
2 changed files with 5 additions and 1 deletions
|
@ -306,6 +306,9 @@ private:
|
||||||
void AddCoins(CCoinsViewCache& cache, const CTransaction& tx, int nHeight, bool check = false);
|
void AddCoins(CCoinsViewCache& cache, const CTransaction& tx, int nHeight, bool check = false);
|
||||||
|
|
||||||
//! Utility function to find any unspent output with a given txid.
|
//! Utility function to find any unspent output with a given txid.
|
||||||
|
// This function can be quite expensive because in the event of a transaction
|
||||||
|
// which is not found in the cache, it can cause up to MAX_OUTPUTS_PER_BLOCK
|
||||||
|
// lookups to database, so it should be used with care.
|
||||||
const Coin& AccessByTxid(const CCoinsViewCache& cache, const uint256& txid);
|
const Coin& AccessByTxid(const CCoinsViewCache& cache, const uint256& txid);
|
||||||
|
|
||||||
#endif // BITCOIN_COINS_H
|
#endif // BITCOIN_COINS_H
|
||||||
|
|
|
@ -1366,6 +1366,7 @@ static DisconnectResult DisconnectBlock(const CBlock& block, const CBlockIndex*
|
||||||
for (int i = block.vtx.size() - 1; i >= 0; i--) {
|
for (int i = block.vtx.size() - 1; i >= 0; i--) {
|
||||||
const CTransaction &tx = *(block.vtx[i]);
|
const CTransaction &tx = *(block.vtx[i]);
|
||||||
uint256 hash = tx.GetHash();
|
uint256 hash = tx.GetHash();
|
||||||
|
bool is_coinbase = tx.IsCoinBase();
|
||||||
|
|
||||||
// Check that all outputs are available and match the outputs in the block itself
|
// Check that all outputs are available and match the outputs in the block itself
|
||||||
// exactly.
|
// exactly.
|
||||||
|
@ -1374,7 +1375,7 @@ static DisconnectResult DisconnectBlock(const CBlock& block, const CBlockIndex*
|
||||||
COutPoint out(hash, o);
|
COutPoint out(hash, o);
|
||||||
Coin coin;
|
Coin coin;
|
||||||
bool is_spent = view.SpendCoin(out, &coin);
|
bool is_spent = view.SpendCoin(out, &coin);
|
||||||
if (!is_spent || tx.vout[o] != coin.out) {
|
if (!is_spent || tx.vout[o] != coin.out || pindex->nHeight != coin.nHeight || is_coinbase != coin.fCoinBase) {
|
||||||
fClean = false; // transaction output mismatch
|
fClean = false; // transaction output mismatch
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue