Branch data 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 : : 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 : }