Branch data Line data Source code
1 : : // Copyright (c) 2019-2021 The Bitcoin Core developers 2 : : // Distributed under the MIT software license, see the accompanying 3 : : // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 : : 5 : : #include <node/coin.h> 6 : : 7 : : #include <node/context.h> 8 : : #include <txmempool.h> 9 : : #include <validation.h> 10 : : 11 : : namespace node { 12 : 161 : void FindCoins(const NodeContext& node, std::map<COutPoint, Coin>& coins) 13 : : { 14 [ + - ]: 161 : assert(node.mempool); 15 [ - + ]: 161 : assert(node.chainman); 16 [ + - + - ]: 161 : LOCK2(cs_main, node.mempool->cs); 17 [ + - + - : 334 : CCoinsViewCache& chain_view = node.chainman->ActiveChainstate().CoinsTip(); + - ] 18 [ + - + - : 334 : CCoinsViewMemPool mempool_view(&chain_view, *node.mempool); + - ] 19 [ + + ]: 2366 : for (auto& coin : coins) { 20 [ + - + - ]: 2205 : if (!mempool_view.GetCoin(coin.first, coin.second)) { 21 : : // Either the coin is not in the CCoinsViewCache or is spent. Clear it. 22 [ + - ]: 2205 : coin.second.Clear(); 23 : 2205 : } 24 : : } 25 : 161 : } 26 : : } // namespace node