chain.h
1 // Copyright (c) 2022 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 #ifndef BITCOIN_KERNEL_CHAIN_H 6 #define BITCOIN_KERNEL_CHAIN_H 7 8 #include<iostream> 9 10 class CBlock; 11 class CBlockIndex; 12 namespace interfaces { 13 struct BlockInfo; 14 } // namespace interfaces 15 16 namespace kernel { 17 //! Return data from block index. 18 interfaces::BlockInfo MakeBlockInfo(const CBlockIndex* block_index, const CBlock* data = nullptr); 19 20 } // namespace kernel 21 22 //! This enum describes the various roles a specific Chainstate instance can take. 23 //! Other parts of the system sometimes need to vary in behavior depending on the 24 //! existence of a background validation chainstate, e.g. when building indexes. 25 enum class ChainstateRole { 26 // Single chainstate in use, "normal" IBD mode. 27 NORMAL, 28 29 // Doing IBD-style validation in the background. Implies use of an assumed-valid 30 // chainstate. 31 BACKGROUND, 32 33 // Active assumed-valid chainstate. Implies use of a background IBD chainstate. 34 ASSUMEDVALID, 35 }; 36 37 std::ostream& operator<<(std::ostream& os, const ChainstateRole& role); 38 39 #endif // BITCOIN_KERNEL_CHAIN_H