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 : 2 : void FindCoins(const NodeContext& node, std::map<COutPoint, Coin>& coins)
13 : : {
14 [ - + ]: 2 : assert(node.mempool);
15 [ - + ]: 2 : assert(node.chainman);
16 [ + - ]: 2 : 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 [ + + ]: 4 : for (auto& coin : coins) {
20 [ + - + - ]: 2 : if (!mempool_view.GetCoin(coin.first, coin.second)) {
21 : : // Either the coin is not in the CCoinsViewCache or is spent. Clear it.
22 : 2 : coin.second.Clear();
23 : : }
24 : : }
25 [ + - + - ]: 6 : }
26 : : } // namespace node
|