Changeset View
Changeset View
Standalone View
Standalone View
src/node/coin.cpp
// Copyright (c) 2019 The Bitcoin Core developers | // Copyright (c) 2019 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#include <node/coin.h> | #include <node/coin.h> | ||||
#include <node/context.h> | |||||
#include <txmempool.h> | #include <txmempool.h> | ||||
#include <validation.h> | #include <validation.h> | ||||
void FindCoins(std::map<COutPoint, Coin> &coins) { | void FindCoins(const NodeContext &node, std::map<COutPoint, Coin> &coins) { | ||||
LOCK2(cs_main, ::g_mempool.cs); | assert(node.mempool); | ||||
LOCK2(cs_main, node.mempool->cs); | |||||
CCoinsViewCache &chain_view = ::ChainstateActive().CoinsTip(); | CCoinsViewCache &chain_view = ::ChainstateActive().CoinsTip(); | ||||
CCoinsViewMemPool mempool_view(&chain_view, ::g_mempool); | CCoinsViewMemPool mempool_view(&chain_view, *node.mempool); | ||||
for (auto &coin : coins) { | for (auto &coin : coins) { | ||||
if (!mempool_view.GetCoin(coin.first, coin.second)) { | if (!mempool_view.GetCoin(coin.first, coin.second)) { | ||||
// Either the coin is not in the CCoinsViewCache or is spent. Clear | // Either the coin is not in the CCoinsViewCache or is spent. Clear | ||||
// it. | // it. | ||||
coin.second.Clear(); | coin.second.Clear(); | ||||
} | } | ||||
} | } | ||||
} | } |