Changeset View
Changeset View
Standalone View
Standalone View
src/kernel/chainstatemanager_opts.h
// Copyright (c) 2022 The Bitcoin Core developers | // Copyright (c) 2022 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#ifndef BITCOIN_KERNEL_CHAINSTATEMANAGER_OPTS_H | #ifndef BITCOIN_KERNEL_CHAINSTATEMANAGER_OPTS_H | ||||
#define BITCOIN_KERNEL_CHAINSTATEMANAGER_OPTS_H | #define BITCOIN_KERNEL_CHAINSTATEMANAGER_OPTS_H | ||||
#include <arith_uint256.h> | |||||
#include <primitives/blockhash.h> | #include <primitives/blockhash.h> | ||||
#include <util/time.h> | #include <util/time.h> | ||||
#include <cstdint> | #include <cstdint> | ||||
#include <functional> | #include <functional> | ||||
#include <optional> | #include <optional> | ||||
class Config; | class Config; | ||||
static constexpr auto DEFAULT_MAX_TIP_AGE{24h}; | static constexpr auto DEFAULT_MAX_TIP_AGE{24h}; | ||||
namespace kernel { | namespace kernel { | ||||
/** | /** | ||||
* An options struct for `ChainstateManager`, more ergonomically referred to as | * An options struct for `ChainstateManager`, more ergonomically referred to as | ||||
* `ChainstateManager::Options` due to the using-declaration in | * `ChainstateManager::Options` due to the using-declaration in | ||||
* `ChainstateManager`. | * `ChainstateManager`. | ||||
*/ | */ | ||||
struct ChainstateManagerOpts { | struct ChainstateManagerOpts { | ||||
const Config &config; | const Config &config; | ||||
const std::function<NodeClock::time_point()> adjusted_time_callback{ | const std::function<NodeClock::time_point()> adjusted_time_callback{ | ||||
nullptr}; | nullptr}; | ||||
//! If set, it will override the minimum work we will assume exists on some | |||||
//! valid chain. | |||||
std::optional<arith_uint256> minimum_chain_work{}; | |||||
//! If set, it will override the block hash whose ancestors we will assume | //! If set, it will override the block hash whose ancestors we will assume | ||||
//! to have valid scripts without checking them. | //! to have valid scripts without checking them. | ||||
std::optional<BlockHash> assumed_valid_block{}; | std::optional<BlockHash> assumed_valid_block{}; | ||||
//! If the tip is older than this, the node is considered to be in initial | //! If the tip is older than this, the node is considered to be in initial | ||||
//! block download. | //! block download. | ||||
std::chrono::seconds max_tip_age{DEFAULT_MAX_TIP_AGE}; | std::chrono::seconds max_tip_age{DEFAULT_MAX_TIP_AGE}; | ||||
}; | }; | ||||
} // namespace kernel | } // namespace kernel | ||||
#endif // BITCOIN_KERNEL_CHAINSTATEMANAGER_OPTS_H | #endif // BITCOIN_KERNEL_CHAINSTATEMANAGER_OPTS_H |