/tmp/bitcoin/src/node/coin.cpp
Line | Count | Source |
1 | | // Copyright (c) 2019-present 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 | 1.19k | { |
14 | 1.19k | assert(node.mempool); |
15 | 1.19k | assert(node.chainman); |
16 | 1.19k | LOCK2(cs_main, node.mempool->cs); |
17 | 1.19k | CCoinsViewCache& chain_view = node.chainman->ActiveChainstate().CoinsTip(); |
18 | 1.19k | CCoinsViewMemPool mempool_view(&chain_view, *node.mempool); |
19 | 3.98k | for (auto& [outpoint, coin] : coins) { |
20 | 3.98k | if (auto c{mempool_view.GetCoin(outpoint)}) { |
21 | 3.93k | coin = std::move(*c); |
22 | 3.93k | } else { |
23 | 47 | coin.Clear(); // Either the coin is not in the CCoinsViewCache or is spent |
24 | 47 | } |
25 | 3.98k | } |
26 | 1.19k | } |
27 | | } // namespace node |