Bitcoin Core
28.99.0
P2P Digital Currency
src
node
coin.cpp
Go to the documentation of this file.
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
& [outpoint, coin] : coins) {
20
if
(
auto
c{mempool_view.
GetCoin
(outpoint)}) {
21
coin = std::move(*c);
22
}
else
{
23
coin.Clear();
// Either the coin is not in the CCoinsViewCache or is spent
24
}
25
}
26
}
27
}
// namespace node
CCoinsViewCache
CCoinsView that adds a memory cache for transactions to another CCoinsView.
Definition:
coins.h:363
CCoinsViewMemPool
CCoinsView that brings transactions from a mempool into view.
Definition:
txmempool.h:925
CCoinsViewMemPool::GetCoin
std::optional< Coin > GetCoin(const COutPoint &outpoint) const override
GetCoin, returning whether it exists and is not spent.
Definition:
txmempool.cpp:1027
coin.h
cs_main
RecursiveMutex cs_main
Mutex to guard access to validation specific variables, such as reading or changing the chainstate.
Definition:
cs_main.cpp:8
node
Definition:
messages.h:20
node::FindCoins
void FindCoins(const NodeContext &node, std::map< COutPoint, Coin > &coins)
Look up unspent output information.
Definition:
coin.cpp:12
context.h
node::NodeContext
NodeContext struct containing references to chain state and connection state.
Definition:
context.h:56
LOCK2
#define LOCK2(cs1, cs2)
Definition:
sync.h:258
assert
assert(!tx.IsCoinBase())
Generated on Wed Dec 18 2024 20:00:10 for Bitcoin Core by
1.9.4