mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-03-03 02:06:18 +00:00
Move its ownership to the ChainstateManager class. Next to simplifying usage of the kernel library by no longer requiring manual setup of the cache prior to using validation code, it also slims down the amount of memory allocated by BasicTestingSetup. Use this opportunity to make SignatureCache RAII styled Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
59 lines
2.0 KiB
C++
59 lines
2.0 KiB
C++
// 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
|
|
|
|
#include <kernel/notifications_interface.h>
|
|
|
|
#include <arith_uint256.h>
|
|
#include <dbwrapper.h>
|
|
#include <script/sigcache.h>
|
|
#include <txdb.h>
|
|
#include <uint256.h>
|
|
#include <util/time.h>
|
|
|
|
#include <cstdint>
|
|
#include <functional>
|
|
#include <optional>
|
|
|
|
class CChainParams;
|
|
class ValidationSignals;
|
|
|
|
static constexpr bool DEFAULT_CHECKPOINTS_ENABLED{true};
|
|
static constexpr auto DEFAULT_MAX_TIP_AGE{24h};
|
|
|
|
namespace kernel {
|
|
|
|
/**
|
|
* An options struct for `ChainstateManager`, more ergonomically referred to as
|
|
* `ChainstateManager::Options` due to the using-declaration in
|
|
* `ChainstateManager`.
|
|
*/
|
|
struct ChainstateManagerOpts {
|
|
const CChainParams& chainparams;
|
|
fs::path datadir;
|
|
std::optional<int32_t> check_block_index{};
|
|
bool checkpoints_enabled{DEFAULT_CHECKPOINTS_ENABLED};
|
|
//! 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 to have valid scripts without checking them.
|
|
std::optional<uint256> assumed_valid_block{};
|
|
//! 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};
|
|
DBOptions block_tree_db{};
|
|
DBOptions coins_db{};
|
|
CoinsViewOptions coins_view{};
|
|
Notifications& notifications;
|
|
ValidationSignals* signals{nullptr};
|
|
//! Number of script check worker threads. Zero means no parallel verification.
|
|
int worker_threads_num{0};
|
|
size_t script_execution_cache_bytes{DEFAULT_SCRIPT_EXECUTION_CACHE_BYTES};
|
|
size_t signature_cache_bytes{DEFAULT_SIGNATURE_CACHE_BYTES};
|
|
};
|
|
|
|
} // namespace kernel
|
|
|
|
#endif // BITCOIN_KERNEL_CHAINSTATEMANAGER_OPTS_H
|