blockfilter.cpp raw

   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  }
  32