chainstatemanager_opts.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_CHAINSTATEMANAGER_OPTS_H
   6  #define LIMENKA_KERNEL_CHAINSTATEMANAGER_OPTS_H
   7  
   8  #include <kernel/notifications_interface.h>
   9  
  10  #include <arith_uint256.h>
  11  #include <dbwrapper.h>
  12  #include <script/sigcache.h>
  13  #include <txdb.h>
  14  #include <uint256.h>
  15  #include <util/time.h>
  16  
  17  #include <cstdint>
  18  #include <functional>
  19  #include <optional>
  20  
  21  class CChainParams;
  22  class ValidationSignals;
  23  
  24  static constexpr bool DEFAULT_CHECKPOINTS_ENABLED{true};
  25  static constexpr auto DEFAULT_MAX_TIP_AGE{24h};
  26  
  27  namespace kernel {
  28  
  29  /**
  30   * An options struct for `ChainstateManager`, more ergonomically referred to as
  31   * `ChainstateManager::Options` due to the using-declaration in
  32   * `ChainstateManager`.
  33   */
  34  struct ChainstateManagerOpts {
  35      const CChainParams& chainparams;
  36      fs::path datadir;
  37      std::optional<int32_t> check_block_index{};
  38      bool checkpoints_enabled{DEFAULT_CHECKPOINTS_ENABLED};
  39      //! If set, it will override the minimum work we will assume exists on some valid chain.
  40      std::optional<arith_uint256> minimum_chain_work{};
  41      //! If set, it will override the block hash whose ancestors we will assume to have valid scripts without checking them.
  42      std::optional<uint256> assumed_valid_block{};
  43      //! If the tip is older than this, the node is considered to be in initial block download.
  44      std::chrono::seconds max_tip_age{DEFAULT_MAX_TIP_AGE};
  45      DBOptions coins_db{};
  46      CoinsViewOptions coins_view{};
  47      Notifications& notifications;
  48      ValidationSignals* signals{nullptr};
  49      //! Number of script check worker threads. Zero means no parallel verification.
  50      int worker_threads_num{0};
  51      size_t script_execution_cache_bytes{DEFAULT_SCRIPT_EXECUTION_CACHE_BYTES};
  52      size_t signature_cache_bytes{DEFAULT_SIGNATURE_CACHE_BYTES};
  53  };
  54  
  55  } // namespace kernel
  56  
  57  #endif // LIMENKA_KERNEL_CHAINSTATEMANAGER_OPTS_H
  58