2022-03-01 16:14:12 -05:00
|
|
|
// Copyright (c) 2022 The Bitcoin Core developers
|
|
|
|
// Distributed under the MIT software license, see the accompanying
|
|
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
|
|
|
|
#ifndef BITCOIN_KERNEL_CHAINSTATEMANAGER_OPTS_H
|
|
|
|
#define BITCOIN_KERNEL_CHAINSTATEMANAGER_OPTS_H
|
|
|
|
|
2023-05-10 22:29:17 +02:00
|
|
|
#include <kernel/notifications_interface.h>
|
|
|
|
|
2022-07-21 11:13:13 +02:00
|
|
|
#include <arith_uint256.h>
|
2022-08-16 23:32:55 -04:00
|
|
|
#include <dbwrapper.h>
|
|
|
|
#include <txdb.h>
|
2022-07-20 22:00:11 +02:00
|
|
|
#include <uint256.h>
|
2022-08-05 15:12:58 +02:00
|
|
|
#include <util/time.h>
|
|
|
|
|
2022-03-01 16:14:12 -05:00
|
|
|
#include <cstdint>
|
|
|
|
#include <functional>
|
2022-07-20 22:00:11 +02:00
|
|
|
#include <optional>
|
2022-03-01 16:14:12 -05:00
|
|
|
|
|
|
|
class CChainParams;
|
|
|
|
|
2022-07-26 13:52:48 +02:00
|
|
|
static constexpr bool DEFAULT_CHECKPOINTS_ENABLED{true};
|
2022-07-20 18:16:30 +02:00
|
|
|
static constexpr auto DEFAULT_MAX_TIP_AGE{24h};
|
|
|
|
|
2022-07-13 14:15:11 -04:00
|
|
|
namespace kernel {
|
|
|
|
|
2022-03-01 16:14:12 -05:00
|
|
|
/**
|
|
|
|
* An options struct for `ChainstateManager`, more ergonomically referred to as
|
|
|
|
* `ChainstateManager::Options` due to the using-declaration in
|
|
|
|
* `ChainstateManager`.
|
|
|
|
*/
|
|
|
|
struct ChainstateManagerOpts {
|
|
|
|
const CChainParams& chainparams;
|
2022-08-16 23:32:55 -04:00
|
|
|
fs::path datadir;
|
2022-08-05 15:12:58 +02:00
|
|
|
const std::function<NodeClock::time_point()> adjusted_time_callback{nullptr};
|
2022-07-26 12:59:48 +02:00
|
|
|
std::optional<bool> check_block_index{};
|
2022-07-26 13:52:48 +02:00
|
|
|
bool checkpoints_enabled{DEFAULT_CHECKPOINTS_ENABLED};
|
2022-07-21 11:13:13 +02:00
|
|
|
//! If set, it will override the minimum work we will assume exists on some valid chain.
|
2022-10-28 11:14:02 +02:00
|
|
|
std::optional<arith_uint256> minimum_chain_work{};
|
2022-07-20 22:00:11 +02:00
|
|
|
//! If set, it will override the block hash whose ancestors we will assume to have valid scripts without checking them.
|
2022-10-28 11:14:02 +02:00
|
|
|
std::optional<uint256> assumed_valid_block{};
|
2022-07-20 18:16:30 +02:00
|
|
|
//! If the tip is older than this, the node is considered to be in initial block download.
|
|
|
|
std::chrono::seconds max_tip_age{DEFAULT_MAX_TIP_AGE};
|
2022-08-16 23:32:55 -04:00
|
|
|
DBOptions block_tree_db{};
|
|
|
|
DBOptions coins_db{};
|
|
|
|
CoinsViewOptions coins_view{};
|
2023-05-10 22:29:17 +02:00
|
|
|
Notifications& notifications;
|
2022-03-01 16:14:12 -05:00
|
|
|
};
|
|
|
|
|
2022-07-13 14:15:11 -04:00
|
|
|
} // namespace kernel
|
|
|
|
|
2022-03-01 16:14:12 -05:00
|
|
|
#endif // BITCOIN_KERNEL_CHAINSTATEMANAGER_OPTS_H
|