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 : 0 : void FindCoins(const NodeContext& node, std::map<COutPoint, Coin>& coins) 13 : : { 14 [ # # ]: 0 : assert(node.mempool); 15 [ # # ]: 0 : assert(node.chainman); 16 [ # # ][ # # ]: 0 : LOCK2(cs_main, node.mempool->cs); 17 [ # # ][ # # ]: 0 : CCoinsViewCache& chain_view = node.chainman->ActiveChainstate().CoinsTip(); 18 [ # # ]: 0 : CCoinsViewMemPool mempool_view(&chain_view, *node.mempool); 19 [ # # ]: 0 : for (auto& coin : coins) { 20 [ # # ][ # # ]: 0 : if (!mempool_view.GetCoin(coin.first, coin.second)) { 21 : : // Either the coin is not in the CCoinsViewCache or is spent. Clear it. 22 [ # # ]: 0 : coin.second.Clear(); 23 : 0 : } 24 : : } 25 : 0 : } 26 : : } // namespace node