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