chain.h raw

   1  // Copyright (c) 2022 The Limenka 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 LIMENKA_KERNEL_CHAIN_H
   6  #define LIMENKA_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 // LIMENKA_KERNEL_CHAIN_H
  40