Branch data Line data Source code
# 1 : : // Copyright (c) 2019 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 : : void FindCoins(const NodeContext& node, std::map<COutPoint, Coin>& coins) # 12 : 1496 : { # 13 : 1496 : assert(node.mempool); # 14 : 1496 : assert(node.chainman); # 15 : 1496 : LOCK2(cs_main, node.mempool->cs); # 16 : 1496 : assert(std::addressof(::ChainstateActive()) == std::addressof(node.chainman->ActiveChainstate())); # 17 : 1496 : CCoinsViewCache& chain_view = node.chainman->ActiveChainstate().CoinsTip(); # 18 : 1496 : CCoinsViewMemPool mempool_view(&chain_view, *node.mempool); # 19 [ + + ]: 8864 : for (auto& coin : coins) { # 20 [ + + ]: 8864 : if (!mempool_view.GetCoin(coin.first, coin.second)) { # 21 : : // Either the coin is not in the CCoinsViewCache or is spent. Clear it. # 22 : 172 : coin.second.Clear(); # 23 : 172 : } # 24 : 8864 : } # 25 : 1496 : }