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