Bitcoin Core  24.99.0
P2P Digital Currency
chain.cpp
Go to the documentation of this file.
1 // Copyright (c) 2022 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 <chain.h>
6 #include <interfaces/chain.h>
7 #include <sync.h>
8 #include <uint256.h>
9 
10 class CBlock;
11 
12 namespace kernel {
14 {
15  interfaces::BlockInfo info{index ? *index->phashBlock : uint256::ZERO};
16  if (index) {
17  info.prev_hash = index->pprev ? index->pprev->phashBlock : nullptr;
18  info.height = index->nHeight;
19  LOCK(::cs_main);
20  info.file_number = index->nFile;
21  info.data_pos = index->nDataPos;
22  }
23  info.data = data;
24  return info;
25 }
26 } // namespace kernel
RecursiveMutex cs_main
Mutex to guard access to validation specific variables, such as reading or changing the chainstate.
Definition: validation.cpp:121
Definition: block.h:69
The block chain is a tree shaped structure starting with the genesis block at the root,...
Definition: chain.h:152
CBlockIndex * pprev
pointer to the index of the predecessor of this block
Definition: chain.h:158
int nHeight
height of the entry in the chain. The genesis block has height 0
Definition: chain.h:164
const uint256 * phashBlock
pointer to the hash of the block, if any. Memory is owned by this CBlockIndex
Definition: chain.h:155
static const uint256 ZERO
Definition: uint256.h:124
interfaces::BlockInfo MakeBlockInfo(const CBlockIndex *index, const CBlock *data)
Return data from block index.
Definition: chain.cpp:13
Block data sent with blockConnected, blockDisconnected notifications.
Definition: chain.h:81
#define LOCK(cs)
Definition: sync.h:261