Line data Source code
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 : 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 0 : bool ComputeFilter(BlockFilterType filter_type, const CBlockIndex& block_index, BlockFilter& filter, const BlockManager& blockman) 16 : { 17 0 : LOCK(::cs_main); 18 0 : 19 0 : CBlock block; 20 0 : if (!blockman.ReadBlockFromDisk(block, block_index.GetBlockPos())) { 21 0 : return false; 22 : } 23 : 24 0 : CBlockUndo block_undo; 25 0 : if (block_index.nHeight > 0 && !blockman.UndoReadFromDisk(block_undo, block_index)) { 26 0 : return false; 27 : } 28 : 29 0 : filter = BlockFilter(filter_type, block, block_undo); 30 0 : return true; 31 0 : }