Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
core_memusage.h
Go to the documentation of this file.
1
// Copyright (c) 2015-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
#ifndef BITCOIN_CORE_MEMUSAGE_H
6
#define BITCOIN_CORE_MEMUSAGE_H
7
8
#include <
primitives/transaction.h
>
9
#include <
primitives/block.h
>
10
#include <
memusage.h
>
11
12
static
inline
size_t
RecursiveDynamicUsage
(
const
CScript
&
script
) {
13
return
memusage::DynamicUsage
(
script
);
14
}
15
16
static
inline
size_t
RecursiveDynamicUsage
(
const
COutPoint
& out) {
17
return
0;
18
}
19
20
static
inline
size_t
RecursiveDynamicUsage
(
const
CTxIn
& in) {
21
size_t
mem =
RecursiveDynamicUsage
(in.
scriptSig
) +
RecursiveDynamicUsage
(in.
prevout
) +
memusage::DynamicUsage
(in.
scriptWitness
.
stack
);
22
for
(std::vector<std::vector<unsigned char> >::const_iterator it = in.
scriptWitness
.
stack
.begin(); it != in.
scriptWitness
.
stack
.end(); it++) {
23
mem +=
memusage::DynamicUsage
(*it);
24
}
25
return
mem;
26
}
27
28
static
inline
size_t
RecursiveDynamicUsage
(
const
CTxOut
& out) {
29
return
RecursiveDynamicUsage
(out.scriptPubKey);
30
}
31
32
static
inline
size_t
RecursiveDynamicUsage
(
const
CTransaction
& tx) {
33
size_t
mem =
memusage::DynamicUsage
(tx.
vin
) +
memusage::DynamicUsage
(tx.
vout
);
34
for
(std::vector<CTxIn>::const_iterator it = tx.
vin
.begin(); it != tx.
vin
.end(); it++) {
35
mem +=
RecursiveDynamicUsage
(*it);
36
}
37
for
(std::vector<CTxOut>::const_iterator it = tx.
vout
.begin(); it != tx.
vout
.end(); it++) {
38
mem +=
RecursiveDynamicUsage
(*it);
39
}
40
return
mem;
41
}
42
43
static
inline
size_t
RecursiveDynamicUsage
(
const
CMutableTransaction
& tx) {
44
size_t
mem =
memusage::DynamicUsage
(tx.
vin
) +
memusage::DynamicUsage
(tx.
vout
);
45
for
(std::vector<CTxIn>::const_iterator it = tx.
vin
.begin(); it != tx.
vin
.end(); it++) {
46
mem +=
RecursiveDynamicUsage
(*it);
47
}
48
for
(std::vector<CTxOut>::const_iterator it = tx.
vout
.begin(); it != tx.
vout
.end(); it++) {
49
mem +=
RecursiveDynamicUsage
(*it);
50
}
51
return
mem;
52
}
53
54
static
inline
size_t
RecursiveDynamicUsage
(
const
CBlock
& block) {
55
size_t
mem =
memusage::DynamicUsage
(block.
vtx
);
56
for
(
const
auto
& tx : block.
vtx
) {
57
mem +=
memusage::DynamicUsage
(tx) +
RecursiveDynamicUsage
(*tx);
58
}
59
return
mem;
60
}
61
62
static
inline
size_t
RecursiveDynamicUsage
(
const
CBlockLocator
& locator) {
63
return
memusage::DynamicUsage
(locator.
vHave
);
64
}
65
66
template
<
typename
X>
67
static
inline
size_t
RecursiveDynamicUsage
(
const
std::shared_ptr<X>& p) {
68
return
p ?
memusage::DynamicUsage
(p) +
RecursiveDynamicUsage
(*p) : 0;
69
}
70
71
#endif
// BITCOIN_CORE_MEMUSAGE_H
block.h
CBlock
Definition
block.h:74
CBlock::vtx
std::vector< CTransactionRef > vtx
Definition
block.h:77
COutPoint
An outpoint - a combination of a transaction hash and an index n into its vout.
Definition
transaction.h:29
CScript
Serialized script, used inside transaction inputs and outputs.
Definition
script.h:405
CTransaction
The basic transaction that is broadcasted on the network and contained in blocks.
Definition
transaction.h:281
CTransaction::vout
const std::vector< CTxOut > vout
Definition
transaction.h:292
CTransaction::vin
const std::vector< CTxIn > vin
Definition
transaction.h:291
CTxIn
An input of a transaction.
Definition
transaction.h:62
CTxIn::scriptSig
CScript scriptSig
Definition
transaction.h:65
CTxIn::scriptWitness
CScriptWitness scriptWitness
Only serialized through CTransaction.
Definition
transaction.h:67
CTxIn::prevout
COutPoint prevout
Definition
transaction.h:64
CTxOut
An output of a transaction.
Definition
transaction.h:140
RecursiveDynamicUsage
static size_t RecursiveDynamicUsage(const CScript &script)
Definition
core_memusage.h:12
memusage.h
memusage::DynamicUsage
static size_t DynamicUsage(const int8_t &v)
Dynamic memory usage for built-in types is zero.
Definition
memusage.h:31
script
Definition
parsing.cpp:13
transaction.h
CBlockLocator
Describes a place in the block chain to another node such that if the other node doesn't have the sam...
Definition
block.h:117
CBlockLocator::vHave
std::vector< uint256 > vHave
Definition
block.h:127
CMutableTransaction
A mutable version of CTransaction.
Definition
transaction.h:358
CMutableTransaction::vout
std::vector< CTxOut > vout
Definition
transaction.h:360
CMutableTransaction::vin
std::vector< CTxIn > vin
Definition
transaction.h:359
CScriptWitness::stack
std::vector< std::vector< unsigned char > > stack
Definition
script.h:580
Generated on
for Bitcoin Core by
1.17.0