/ src / node / coin.cpp
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