Bitcoin Core  27.99.0
P2P Digital Currency
blockfilter.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 
6 
7 #include <chainparams.h>
8 #include <node/blockstorage.h>
9 #include <primitives/block.h>
10 #include <undo.h>
11 #include <validation.h>
12 
13 using node::BlockManager;
14 
15 bool ComputeFilter(BlockFilterType filter_type, const CBlockIndex& block_index, BlockFilter& filter, const BlockManager& blockman)
16 {
17  LOCK(::cs_main);
18 
19  CBlock block;
20  if (!blockman.ReadBlockFromDisk(block, block_index.GetBlockPos())) {
21  return false;
22  }
23 
24  CBlockUndo block_undo;
25  if (block_index.nHeight > 0 && !blockman.UndoReadFromDisk(block_undo, block_index)) {
26  return false;
27  }
28 
29  filter = BlockFilter(filter_type, block, block_undo);
30  return true;
31 }
BlockFilterType
Definition: blockfilter.h:93
Complete block filter struct as defined in BIP 157.
Definition: blockfilter.h:115
Definition: block.h:69
The block chain is a tree shaped structure starting with the genesis block at the root,...
Definition: chain.h:141
int nHeight
height of the entry in the chain. The genesis block has height 0
Definition: chain.h:153
FlatFilePos GetBlockPos() const EXCLUSIVE_LOCKS_REQUIRED(
Definition: chain.h:209
Undo information for a CBlock.
Definition: undo.h:63
Maintains a tree of blocks (stored in m_block_index) which is consulted to determine where the most-w...
Definition: blockstorage.h:137
bool ReadBlockFromDisk(CBlock &block, const FlatFilePos &pos) const
Functions for disk access for blocks.
bool UndoReadFromDisk(CBlockUndo &blockundo, const CBlockIndex &index) const
RecursiveMutex cs_main
Mutex to guard access to validation specific variables, such as reading or changing the chainstate.
Definition: cs_main.cpp:8
#define LOCK(cs)
Definition: sync.h:257
bool ComputeFilter(BlockFilterType filter_type, const CBlockIndex &block_index, BlockFilter &filter, const BlockManager &blockman)
Definition: blockfilter.cpp:15