/Users/eugenesiegel/btc/bitcoin/src/node/coin.cpp
Line | Count | Source (jump to first uncovered line) |
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 | 0 | { |
14 | 0 | assert(node.mempool); |
15 | 0 | assert(node.chainman); |
16 | 0 | LOCK2(cs_main, node.mempool->cs); Line | Count | Source | 259 | 0 | UniqueLock criticalblock1(MaybeCheckNotHeld(cs1), #cs1, __FILE__, __LINE__); \ | 260 | 0 | UniqueLock criticalblock2(MaybeCheckNotHeld(cs2), #cs2, __FILE__, __LINE__) |
|
17 | 0 | CCoinsViewCache& chain_view = node.chainman->ActiveChainstate().CoinsTip(); |
18 | 0 | CCoinsViewMemPool mempool_view(&chain_view, *node.mempool); |
19 | 0 | for (auto& [outpoint, coin] : coins) { |
20 | 0 | if (auto c{mempool_view.GetCoin(outpoint)}) { |
21 | 0 | coin = std::move(*c); |
22 | 0 | } else { |
23 | 0 | coin.Clear(); // Either the coin is not in the CCoinsViewCache or is spent |
24 | 0 | } |
25 | 0 | } |
26 | 0 | } |
27 | | } // namespace node |