/ src / kernel / chain.h
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