![]() |
Bitcoin ABC
0.22.15
P2P Digital Currency
|
The block chain is a tree shaped structure starting with the genesis block at the root, with each block potentially having multiple candidates to be the next block. More...
#include <blockindex.h>
Public Member Functions | |
CBlockIndex ()=default | |
CBlockIndex (const CBlockHeader &block) | |
FlatFilePos | GetBlockPos () const |
FlatFilePos | GetUndoPos () const |
CBlockHeader | GetBlockHeader () const |
BlockHash | GetBlockHash () const |
int64_t | GetChainTxCount () const |
Get the number of transaction in the chain so far. More... | |
uint64_t | GetChainSize () const |
Get the size of all the blocks in the chain so far. More... | |
bool | UpdateChainStats () |
Update chain tx stats. More... | |
bool | HaveTxsDownloaded () const |
Check whether this block's and all previous blocks' transactions have been downloaded (and stored to disk) at some point. More... | |
int64_t | GetBlockTime () const |
int64_t | GetBlockTimeMax () const |
int64_t | GetHeaderReceivedTime () const |
int64_t | GetReceivedTimeDiff () const |
int64_t | GetMedianTimePast () const |
std::string | ToString () const |
bool | IsValid (enum BlockValidity nUpTo=BlockValidity::TRANSACTIONS) const |
Check whether this block index entry is valid up to the passed validity level. More... | |
bool | RaiseValidity (enum BlockValidity nUpTo) |
Raise the validity level of this block index entry. More... | |
void | BuildSkip () |
Build the skiplist pointer for this entry. More... | |
CBlockIndex * | GetAncestor (int height) |
Efficiently find an ancestor of this block. More... | |
const CBlockIndex * | GetAncestor (int height) const |
Public Attributes | |
const BlockHash * | phashBlock {nullptr} |
pointer to the hash of the block, if any. More... | |
CBlockIndex * | pprev {nullptr} |
pointer to the index of the predecessor of this block More... | |
CBlockIndex * | pskip {nullptr} |
pointer to the index of some further predecessor of this block More... | |
int | nHeight {0} |
height of the entry in the chain. The genesis block has height 0 More... | |
int | nFile {0} |
Which # file this block is stored in (blk?????.dat) More... | |
unsigned int | nDataPos {0} |
Byte offset within blk?????.dat where this block's data is stored. More... | |
unsigned int | nUndoPos {0} |
Byte offset within rev?????.dat where this block's undo data is stored. More... | |
arith_uint256 | nChainWork {} |
(memory only) Total amount of work (expected number of hashes) in the chain up to and including this block More... | |
unsigned int | nTx {0} |
Number of transactions in this block. More... | |
unsigned int | nSize {0} |
Size of this block. More... | |
BlockStatus | nStatus {} |
Verification status of this block. See enum BlockStatus. More... | |
int32_t | nVersion {0} |
block header More... | |
uint256 | hashMerkleRoot {} |
uint32_t | nTime {0} |
uint32_t | nBits {0} |
uint32_t | nNonce {0} |
int32_t | nSequenceId {0} |
(memory only) Sequential id assigned to distinguish order in which blocks are received. More... | |
uint64_t | nTimeReceived {0} |
(memory only) block header metadata More... | |
unsigned int | nTimeMax {0} |
(memory only) Maximum nTime in the chain up to and including this block. More... | |
Static Public Attributes | |
static constexpr int | nMedianTimeSpan = 11 |
Private Attributes | |
unsigned int | nChainTx {0} |
(memory only) Number of transactions in the chain up to and including this block. More... | |
uint64_t | nChainSize {0} |
(memory only) Size of all blocks in the chain up to and including this block. More... | |
The block chain is a tree shaped structure starting with the genesis block at the root, with each block potentially having multiple candidates to be the next block.
A blockindex may have multiple pprev pointing to it, but at most one of them can be part of the currently active branch.
Definition at line 23 of file blockindex.h.
|
explicitdefault |
|
inlineexplicit |
Definition at line 97 of file blockindex.h.
void CBlockIndex::BuildSkip | ( | ) |
Build the skiplist pointer for this entry.
Definition at line 76 of file blockindex.cpp.
CBlockIndex * CBlockIndex::GetAncestor | ( | int | height | ) |
Efficiently find an ancestor of this block.
Definition at line 71 of file blockindex.cpp.
const CBlockIndex * CBlockIndex::GetAncestor | ( | int | height | ) | const |
|
inline |
Definition at line 133 of file blockindex.h.
|
inline |
Definition at line 120 of file blockindex.h.
|
inline |
Definition at line 102 of file blockindex.h.
|
inline |
|
inline |
|
inline |
Get the size of all the blocks in the chain so far.
Definition at line 143 of file blockindex.h.
|
inline |
Get the number of transaction in the chain so far.
Definition at line 138 of file blockindex.h.
|
inline |
|
inline |
Definition at line 172 of file blockindex.h.
|
inline |
Definition at line 166 of file blockindex.h.
|
inline |
Definition at line 111 of file blockindex.h.
|
inline |
Check whether this block's and all previous blocks' transactions have been downloaded (and stored to disk) at some point.
Does not imply the transactions are consensus-valid (ConnectTip might fail) Does not imply the transactions are still stored on disk. (IsBlockPruned might return true)
Definition at line 158 of file blockindex.h.
|
inline |
Check whether this block index entry is valid up to the passed validity level.
Definition at line 195 of file blockindex.h.
|
inline |
Raise the validity level of this block index entry.
Returns true if the validity was changed.
Definition at line 201 of file blockindex.h.
|
inline |
Definition at line 187 of file blockindex.h.
bool CBlockIndex::UpdateChainStats | ( | ) |
Update chain tx stats.
Definition at line 27 of file blockindex.cpp.
uint256 CBlockIndex::hashMerkleRoot {} |
Definition at line 80 of file blockindex.h.
uint32_t CBlockIndex::nBits {0} |
Definition at line 82 of file blockindex.h.
|
private |
(memory only) Size of all blocks in the chain up to and including this block.
This value will be non-zero only if and only if transactions for this block and all its parents are available.
Definition at line 72 of file blockindex.h.
|
private |
(memory only) Number of transactions in the chain up to and including this block.
This value will be non-zero only if and only if transactions for this block and all its parents are available. Change to 64-bit type when necessary; won't happen before 2030
Definition at line 67 of file blockindex.h.
arith_uint256 CBlockIndex::nChainWork {} |
(memory only) Total amount of work (expected number of hashes) in the chain up to and including this block
Definition at line 49 of file blockindex.h.
unsigned int CBlockIndex::nDataPos {0} |
Byte offset within blk?????.dat where this block's data is stored.
Definition at line 42 of file blockindex.h.
int CBlockIndex::nFile {0} |
Which # file this block is stored in (blk?????.dat)
Definition at line 39 of file blockindex.h.
int CBlockIndex::nHeight {0} |
height of the entry in the chain. The genesis block has height 0
Definition at line 36 of file blockindex.h.
|
static |
Definition at line 170 of file blockindex.h.
uint32_t CBlockIndex::nNonce {0} |
Definition at line 83 of file blockindex.h.
int32_t CBlockIndex::nSequenceId {0} |
(memory only) Sequential id assigned to distinguish order in which blocks are received.
Definition at line 87 of file blockindex.h.
unsigned int CBlockIndex::nSize {0} |
Size of this block.
Note: in a potential headers-first mode, this number cannot be relied upon
Definition at line 59 of file blockindex.h.
BlockStatus CBlockIndex::nStatus {} |
Verification status of this block. See enum BlockStatus.
Definition at line 76 of file blockindex.h.
uint32_t CBlockIndex::nTime {0} |
Definition at line 81 of file blockindex.h.
unsigned int CBlockIndex::nTimeMax {0} |
(memory only) Maximum nTime in the chain up to and including this block.
Definition at line 93 of file blockindex.h.
uint64_t CBlockIndex::nTimeReceived {0} |
(memory only) block header metadata
Definition at line 90 of file blockindex.h.
unsigned int CBlockIndex::nTx {0} |
Number of transactions in this block.
Note: in a potential headers-first mode, this number cannot be relied upon
Definition at line 54 of file blockindex.h.
unsigned int CBlockIndex::nUndoPos {0} |
Byte offset within rev?????.dat where this block's undo data is stored.
Definition at line 45 of file blockindex.h.
int32_t CBlockIndex::nVersion {0} |
block header
Definition at line 79 of file blockindex.h.
const BlockHash* CBlockIndex::phashBlock {nullptr} |
pointer to the hash of the block, if any.
Memory is owned by this CBlockIndex
Definition at line 27 of file blockindex.h.
CBlockIndex* CBlockIndex::pprev {nullptr} |
pointer to the index of the predecessor of this block
Definition at line 30 of file blockindex.h.
CBlockIndex* CBlockIndex::pskip {nullptr} |
pointer to the index of some further predecessor of this block
Definition at line 33 of file blockindex.h.