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 2 : CCoinsViewCache& chain_view = node.chainman->ActiveChainstate().CoinsTip(); 18 2 : 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