/ src / test / util / blockfilter.cpp
blockfilter.cpp
 1  // Copyright (c) 2019-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  #include <test/util/blockfilter.h>
 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.ReadBlock(block, block_index)) {
21          return false;
22      }
23  
24      CBlockUndo block_undo;
25      if (block_index.nHeight > 0 && !blockman.ReadBlockUndo(block_undo, block_index)) {
26          return false;
27      }
28  
29      filter = BlockFilter(filter_type, block, block_undo);
30      return true;
31  }