Bitcoin Core 28.99.0
P2P Digital Currency
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
node::BlockManager Class Reference

Maintains a tree of blocks (stored in m_block_index) which is consulted to determine where the most-work tip is. More...

#include <blockstorage.h>

Collaboration diagram for node::BlockManager:
[legend]

Public Types

using Options = kernel::BlockManagerOpts
 

Public Member Functions

 BlockManager (const util::SignalInterrupt &interrupt, Options opts)
 
BlockMap m_block_index GUARDED_BY (cs_main)
 
std::unique_ptr< BlockTreeDB > m_block_tree_db GUARDED_BY (::cs_main)
 
CBlockIndexInsertBlockIndex (const uint256 &hash) EXCLUSIVE_LOCKS_REQUIRED(cs_main)
 Create a new block index entry for a given block hash. More...
 
void PruneOneBlockFile (const int fileNumber) EXCLUSIVE_LOCKS_REQUIRED(cs_main)
 Mark one block file as pruned (modify associated database entries) More...
 
CBlockIndexLookupBlockIndex (const uint256 &hash) EXCLUSIVE_LOCKS_REQUIRED(cs_main)
 
const CBlockIndexLookupBlockIndex (const uint256 &hash) const EXCLUSIVE_LOCKS_REQUIRED(cs_main)
 
CBlockFileInfoGetBlockFileInfo (size_t n)
 Get block file info entry for one block file. More...
 
void UpdateBlockInfo (const CBlock &block, unsigned int nHeight, const FlatFilePos &pos)
 Update blockfile info while processing a block during reindex. More...
 
bool IsPruneMode () const
 Whether running in -prune mode. More...
 
uint64_t GetPruneTarget () const
 Attempt to stay below this number of bytes of block files. More...
 
bool LoadingBlocks () const
 
uint64_t CalculateCurrentUsage ()
 Calculate the amount of disk space the block & undo files currently use. More...
 
const CBlockIndexGetLastCheckpoint (const CCheckpointData &data) EXCLUSIVE_LOCKS_REQUIRED(cs_main)
 Returns last CBlockIndex* that is a checkpoint. More...
 
fs::path GetBlockPosFilename (const FlatFilePos &pos) const
 Translation to a filesystem path. More...
 
void UnlinkPrunedFiles (const std::set< int > &setFilesToPrune) const
 Actually unlink the specified files. More...
 
bool ReadBlock (CBlock &block, const FlatFilePos &pos) const
 Functions for disk access for blocks. More...
 
bool ReadBlock (CBlock &block, const CBlockIndex &index) const
 
bool ReadRawBlock (std::vector< uint8_t > &block, const FlatFilePos &pos) const
 
bool ReadBlockUndo (CBlockUndo &blockundo, const CBlockIndex &index) const
 
void CleanupBlockRevFiles () const
 

Public Attributes

const util::SignalInterruptm_interrupt
 
std::atomic< bool > m_importing {false}
 
std::atomic_bool m_blockfiles_indexed {true}
 Whether all blockfiles have been added to the block tree database. More...
 
std::optional< int > m_snapshot_height
 The height of the base block of an assumeutxo snapshot, if one is in use. More...
 
std::vector< CBlockIndex * > GetAllBlockIndices() EXCLUSIVE_LOCKS_REQUIRED(std::multimap< CBlockIndex *, CBlockIndex * > m_blocks_unlinked
 All pairs A->B, where A (or one of its ancestors) misses transactions, but B has transactions. More...
 
bool WriteBlockIndexDB() EXCLUSIVE_LOCKS_REQUIRED(bool LoadBlockIndexDB(const std::optional< uint256 > &snapshot_blockhash) EXCLUSIVE_LOCKS_REQUIRED(void ScanAndUnlinkAlreadyPrunedFiles() EXCLUSIVE_LOCKS_REQUIRED(CBlockIndexAddToBlockIndex (const CBlockHeader &block, CBlockIndex *&best_header) EXCLUSIVE_LOCKS_REQUIRED(cs_main)
 Remove any pruned block & undo files that are still on disk. More...
 
bool WriteBlockUndo(const CBlockUndo &blockundo, BlockValidationState &state, CBlockIndex &block) EXCLUSIVE_LOCKS_REQUIRED(FlatFilePos WriteBlock (const CBlock &block, int nHeight)
 Store block on disk and update block file statistics. More...
 
bool CheckBlockDataAvailability(const CBlockIndex &upper_block LIFETIMEBOUND, const CBlockIndex &lower_block LIFETIMEBOUND) EXCLUSIVE_LOCKS_REQUIRED(const CBlockIndex *GetFirstBlock(const CBlockIndex &upper_block LIFETIMEBOUND, uint32_t status_mask, const CBlockIndex *lower_block=nullptr) const EXCLUSIVE_LOCKS_REQUIRED(boo m_have_pruned ) = false
 Check if all blocks in the [upper_block, lower_block] range have data available. More...
 
bool IsBlockPruned(const CBlockIndex &block) const EXCLUSIVE_LOCKS_REQUIRED(void UpdatePruneLock(const std::string &name, const PruneLockInfo &lock_info) EXCLUSIVE_LOCKS_REQUIRED(AutoFile OpenBlockFile (const FlatFilePos &pos, bool fReadOnly=false) const
 Check whether the block associated with this index entry is pruned or not. More...
 

Static Public Attributes

static constexpr auto PRUNE_TARGET_MANUAL {std::numeric_limits<uint64_t>::max()}
 

Private Member Functions

const CChainParamsGetParams () const
 
const Consensus::ParamsGetConsensus () const
 
bool LoadBlockIndex (const std::optional< uint256 > &snapshot_blockhash) EXCLUSIVE_LOCKS_REQUIRED(cs_main)
 Load the blocktree off disk and into memory. More...
 
bool FlushBlockFile (int blockfile_num, bool fFinalize, bool finalize_undo)
 Return false if block file or undo file flushing fails. More...
 
bool FlushUndoFile (int block_file, bool finalize=false)
 Return false if undo file flushing fails. More...
 
FlatFilePos FindNextBlockPos (unsigned int nAddSize, unsigned int nHeight, uint64_t nTime)
 Helper function performing various preparations before a block can be saved to disk: Returns the correct position for the block to be saved, which may be in the current or a new block file depending on nAddSize. More...
 
bool FlushChainstateBlockFile (int tip_height)
 
bool FindUndoPos (BlockValidationState &state, int nFile, FlatFilePos &pos, unsigned int nAddSize)
 
AutoFile OpenUndoFile (const FlatFilePos &pos, bool fReadOnly=false) const
 Open an undo file (rev?????.dat) More...
 
void FindFilesToPruneManual (std::set< int > &setFilesToPrune, int nManualPruneHeight, const Chainstate &chain, ChainstateManager &chainman)
 
void FindFilesToPrune (std::set< int > &setFilesToPrune, int last_prune, const Chainstate &chain, ChainstateManager &chainman)
 Prune block and undo files (blk???.dat and rev???.dat) so that the disk space used is less than a user-defined target. More...
 
std::array< std::optional< BlockfileCursor >, BlockfileType::NUM_TYPES > m_blockfile_cursors GUARDED_BY (cs_LastBlockFile)
 Since assumedvalid chainstates may be syncing a range of the chain that is very far away from the normal/background validation process, we should segment blockfiles for assumed chainstates. More...
 
int MaxBlockfileNum () const EXCLUSIVE_LOCKS_REQUIRED(cs_LastBlockFile)
 
std::unordered_map< std::string, PruneLockInfo > m_prune_locks GUARDED_BY (::cs_main)
 Map from external index name to oldest block that must not be pruned. More...
 
BlockfileType BlockfileTypeForHeight (int height)
 

Private Attributes

friend Chainstate
 
friend ChainstateManager
 
RecursiveMutex cs_LastBlockFile
 
std::vector< CBlockFileInfom_blockfile_info
 
bool m_check_for_pruning = false
 Global flag to indicate we should check to see if there are block/undo files that should be deleted. More...
 
const bool m_prune_mode
 
const std::vector< std::byte > m_xor_key
 
std::set< CBlockIndex * > m_dirty_blockindex
 Dirty block index entries. More...
 
std::set< int > m_dirty_fileinfo
 Dirty block file entries. More...
 
const kernel::BlockManagerOpts m_opts
 
const FlatFileSeq m_block_file_seq
 
const FlatFileSeq m_undo_file_seq
 

Detailed Description

Maintains a tree of blocks (stored in m_block_index) which is consulted to determine where the most-work tip is.

This data is used mostly in Chainstate - information about, e.g., candidate tips is not maintained here.

Definition at line 138 of file blockstorage.h.

Member Typedef Documentation

◆ Options

Definition at line 262 of file blockstorage.h.

Constructor & Destructor Documentation

◆ BlockManager()

node::BlockManager::BlockManager ( const util::SignalInterrupt interrupt,
Options  opts 
)
explicit

Definition at line 1154 of file blockstorage.cpp.

Member Function Documentation

◆ BlockfileTypeForHeight()

BlockfileType node::BlockManager::BlockfileTypeForHeight ( int  height)
private

Definition at line 743 of file blockstorage.cpp.

Here is the caller graph for this function:

◆ CalculateCurrentUsage()

uint64_t node::BlockManager::CalculateCurrentUsage ( )

Calculate the amount of disk space the block & undo files currently use.

Definition at line 765 of file blockstorage.cpp.

Here is the caller graph for this function:

◆ CleanupBlockRevFiles()

void node::BlockManager::CleanupBlockRevFiles ( ) const

Definition at line 629 of file blockstorage.cpp.

Here is the call graph for this function:

◆ FindFilesToPrune()

void node::BlockManager::FindFilesToPrune ( std::set< int > &  setFilesToPrune,
int  last_prune,
const Chainstate chain,
ChainstateManager chainman 
)
private

Prune block and undo files (blk???.dat and rev???.dat) so that the disk space used is less than a user-defined target.

The user sets the target (in MB) on the command line or in config file. This will be run on startup and whenever new space is allocated in a block or undo file, staying below the target. Changing back to unpruned requires a reindex (which in this case means the blockchain must be re-downloaded.)

Pruning functions are called from FlushStateToDisk when the m_check_for_pruning flag has been set. Block and undo files are deleted in lock-step (when blk00003.dat is deleted, so is rev00003.dat.) Pruning cannot take place until the longest chain is at least a certain length (CChainParams::nPruneAfterHeight). Pruning will never delete a block within a defined distance (currently 288) from the active chain's tip. The block index is updated by unsetting HAVE_DATA and HAVE_UNDO for any blocks that were stored in the deleted files. A db flag records the fact that at least some block files have been pruned.

Parameters
[out]setFilesToPruneThe set of file indices that can be unlinked will be returned
last_pruneThe last height we're able to prune, according to the prune locks

Definition at line 302 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FindFilesToPruneManual()

void node::BlockManager::FindFilesToPruneManual ( std::set< int > &  setFilesToPrune,
int  nManualPruneHeight,
const Chainstate chain,
ChainstateManager chainman 
)
private

Definition at line 272 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FindNextBlockPos()

FlatFilePos node::BlockManager::FindNextBlockPos ( unsigned int  nAddSize,
unsigned int  nHeight,
uint64_t  nTime 
)
private

Helper function performing various preparations before a block can be saved to disk: Returns the correct position for the block to be saved, which may be in the current or a new block file depending on nAddSize.

May flush the previous blockfile to disk if full, updates blockfile info, and checks if there is enough disk space to save the block.

The nAddSize argument passed to this function should include not just the size of the serialized CBlock, but also the size of separator fields (BLOCK_SERIALIZATION_HEADER_SIZE).

Definition at line 805 of file blockstorage.cpp.

Here is the call graph for this function:

◆ FindUndoPos()

bool node::BlockManager::FindUndoPos ( BlockValidationState state,
int  nFile,
FlatFilePos pos,
unsigned int  nAddSize 
)
private

Definition at line 917 of file blockstorage.cpp.

Here is the call graph for this function:

◆ FlushBlockFile()

bool node::BlockManager::FlushBlockFile ( int  blockfile_num,
bool  fFinalize,
bool  finalize_undo 
)
private

Return false if block file or undo file flushing fails.

Definition at line 714 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FlushChainstateBlockFile()

bool node::BlockManager::FlushChainstateBlockFile ( int  tip_height)
private

Definition at line 751 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FlushUndoFile()

bool node::BlockManager::FlushUndoFile ( int  block_file,
bool  finalize = false 
)
private

Return false if undo file flushing fails.

Definition at line 704 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetBlockFileInfo()

CBlockFileInfo * node::BlockManager::GetBlockFileInfo ( size_t  n)

Get block file info entry for one block file.

Definition at line 665 of file blockstorage.cpp.

◆ GetBlockPosFilename()

fs::path node::BlockManager::GetBlockPosFilename ( const FlatFilePos pos) const

Translation to a filesystem path.

Definition at line 800 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetConsensus()

const Consensus::Params & node::BlockManager::GetConsensus ( ) const
inlineprivate

Definition at line 145 of file blockstorage.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetLastCheckpoint()

const CBlockIndex * node::BlockManager::GetLastCheckpoint ( const CCheckpointData data)

Returns last CBlockIndex* that is a checkpoint.

Definition at line 578 of file blockstorage.cpp.

Here is the call graph for this function:

◆ GetParams()

const CChainParams & node::BlockManager::GetParams ( ) const
inlineprivate

Definition at line 144 of file blockstorage.h.

Here is the caller graph for this function:

◆ GetPruneTarget()

uint64_t node::BlockManager::GetPruneTarget ( ) const
inline

Attempt to stay below this number of bytes of block files.

Definition at line 352 of file blockstorage.h.

Here is the caller graph for this function:

◆ GUARDED_BY() [1/4]

std::unordered_map< std::string, PruneLockInfo > m_prune_locks node::BlockManager::GUARDED_BY ( ::cs_main  )
private

Map from external index name to oldest block that must not be pruned.

Note
Internally, only blocks at height (height_first - PRUNE_LOCK_BUFFER - 1) and below will be pruned, but callers should avoid assuming any particular buffer size.

◆ GUARDED_BY() [2/4]

std::unique_ptr< BlockTreeDB > m_block_tree_db node::BlockManager::GUARDED_BY ( ::cs_main  )

◆ GUARDED_BY() [3/4]

std::array< std::optional< BlockfileCursor >, BlockfileType::NUM_TYPES > m_blockfile_cursors node::BlockManager::GUARDED_BY ( cs_LastBlockFile  )
private

Since assumedvalid chainstates may be syncing a range of the chain that is very far away from the normal/background validation process, we should segment blockfiles for assumed chainstates.

Otherwise, we might have wildly different height ranges mixed into the same block files, which would impair our ability to prune effectively.

This data structure maintains separate blockfile number cursors for each BlockfileType. The ASSUMED state is initialized, when necessary, in FindNextBlockPos().

The first element is the NORMAL cursor, second is ASSUMED.

◆ GUARDED_BY() [4/4]

BlockMap m_block_index node::BlockManager::GUARDED_BY ( cs_main  )

◆ InsertBlockIndex()

CBlockIndex * node::BlockManager::InsertBlockIndex ( const uint256 hash)

Create a new block index entry for a given block hash.

Definition at line 381 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsPruneMode()

bool node::BlockManager::IsPruneMode ( ) const
inline

Whether running in -prune mode.

Definition at line 349 of file blockstorage.h.

Here is the caller graph for this function:

◆ LoadBlockIndex()

bool node::BlockManager::LoadBlockIndex ( const std::optional< uint256 > &  snapshot_blockhash)
private

Load the blocktree off disk and into memory.

Populate certain metadata per index entry (nStatus, nChainWork, nTimeMax, etc.) as well as peripheral collections like m_dirty_blockindex.

Definition at line 397 of file blockstorage.cpp.

Here is the call graph for this function:

◆ LoadingBlocks()

bool node::BlockManager::LoadingBlocks ( ) const
inline

Definition at line 355 of file blockstorage.h.

Here is the caller graph for this function:

◆ LookupBlockIndex() [1/2]

const CBlockIndex * node::BlockManager::LookupBlockIndex ( const uint256 hash) const

Definition at line 197 of file blockstorage.cpp.

Here is the call graph for this function:

◆ LookupBlockIndex() [2/2]

CBlockIndex * node::BlockManager::LookupBlockIndex ( const uint256 hash)

Definition at line 190 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MaxBlockfileNum()

int node::BlockManager::MaxBlockfileNum ( ) const
inlineprivate

Definition at line 222 of file blockstorage.h.

Here is the caller graph for this function:

◆ OpenUndoFile()

AutoFile node::BlockManager::OpenUndoFile ( const FlatFilePos pos,
bool  fReadOnly = false 
) const
private

Open an undo file (rev?????.dat)

Definition at line 795 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ PruneOneBlockFile()

void node::BlockManager::PruneOneBlockFile ( const int  fileNumber)

Mark one block file as pruned (modify associated database entries)

Definition at line 238 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ReadBlock() [1/2]

bool node::BlockManager::ReadBlock ( CBlock block,
const CBlockIndex index 
) const

Definition at line 1032 of file blockstorage.cpp.

Here is the call graph for this function:

◆ ReadBlock() [2/2]

bool node::BlockManager::ReadBlock ( CBlock block,
const FlatFilePos pos 
) const

Functions for disk access for blocks.

Definition at line 998 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ReadBlockUndo()

bool node::BlockManager::ReadBlockUndo ( CBlockUndo blockundo,
const CBlockIndex index 
) const

Definition at line 672 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ReadRawBlock()

bool node::BlockManager::ReadRawBlock ( std::vector< uint8_t > &  block,
const FlatFilePos pos 
) const

Definition at line 1046 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UnlinkPrunedFiles()

void node::BlockManager::UnlinkPrunedFiles ( const std::set< int > &  setFilesToPrune) const

Actually unlink the specified files.

Definition at line 776 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateBlockInfo()

void node::BlockManager::UpdateBlockInfo ( const CBlock block,
unsigned int  nHeight,
const FlatFilePos pos 
)

Update blockfile info while processing a block during reindex.

The block must be available on disk.

Parameters
[in]blockthe block being processed
[in]nHeightthe height of the block
[in]posthe position of the serialized CBlock on disk

Definition at line 895 of file blockstorage.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ AddToBlockIndex

CBlockIndex * node::BlockManager::AddToBlockIndex

Remove any pruned block & undo files that are still on disk.

This could happen on some systems if the file was still being read while unlinked, or if we crash before unlinking.

Definition at line 314 of file blockstorage.h.

◆ Chainstate

friend node::BlockManager::Chainstate
private

Definition at line 140 of file blockstorage.h.

◆ ChainstateManager

friend node::BlockManager::ChainstateManager
private

Definition at line 141 of file blockstorage.h.

◆ cs_LastBlockFile

RecursiveMutex node::BlockManager::cs_LastBlockFile
private

Definition at line 204 of file blockstorage.h.

◆ m_block_file_seq

const FlatFileSeq node::BlockManager::m_block_file_seq
private

Definition at line 258 of file blockstorage.h.

◆ m_blockfile_info

std::vector<CBlockFileInfo> node::BlockManager::m_blockfile_info
private

Definition at line 205 of file blockstorage.h.

◆ m_blockfiles_indexed

std::atomic_bool node::BlockManager::m_blockfiles_indexed {true}

Whether all blockfiles have been added to the block tree database.

Normally true, but set to false when a reindex is requested and the database is wiped. The value is persisted in the database across restarts and will be false until reindexing completes.

Definition at line 275 of file blockstorage.h.

◆ m_blocks_unlinked

std::vector<CBlockIndex*> GetAllBlockIndices () EXCLUSIVE_LOCKS_REQUIRED( std::multimap<CBlockIndex*, CBlockIndex*> node::BlockManager::m_blocks_unlinked

All pairs A->B, where A (or one of its ancestors) misses transactions, but B has transactions.

Pruned nodes may have entries where B is missing data.

Definition at line 299 of file blockstorage.h.

◆ m_check_for_pruning

bool node::BlockManager::m_check_for_pruning = false
private

Global flag to indicate we should check to see if there are block/undo files that should be deleted.

Set on startup or if we allocate more file space when we're in prune mode

Definition at line 234 of file blockstorage.h.

◆ m_dirty_blockindex

std::set<CBlockIndex*> node::BlockManager::m_dirty_blockindex
private

Dirty block index entries.

Definition at line 241 of file blockstorage.h.

◆ m_dirty_fileinfo

std::set<int> node::BlockManager::m_dirty_fileinfo
private

Dirty block file entries.

Definition at line 244 of file blockstorage.h.

◆ m_have_pruned

bool CheckBlockDataAvailability (const CBlockIndex& upper_block LIFETIMEBOUND, const CBlockIndex& lower_block LIFETIMEBOUND) EXCLUSIVE_LOCKS_REQUIRED( const CBlockIndex* GetFirstBlock ( const CBlockIndex& upper_block LIFETIMEBOUND, uint32_t status_mask, const CBlockIndex* lower_block = nullptr ) const EXCLUSIVE_LOCKS_REQUIRED( boo node::BlockManager::m_have_pruned) = false

Check if all blocks in the [upper_block, lower_block] range have data available.

The caller is responsible for ensuring that lower_block is an ancestor of upper_block (part of the same chain).

Returns the earliest block with specified status_mask flags set after the latest block not having those flags.

This function starts from upper_block, which must have all status_mask flags set, and iterates backwards through its ancestors. It continues as long as each block has all status_mask flags set, until reaching the oldest ancestor or lower_block.

Precondition
upper_block must have all status_mask flags set.
lower_block must be null or an ancestor of upper_block
Parameters
upper_blockThe starting block for the search, which must have all status_mask flags set.
status_maskBitmask specifying required status flags.
lower_blockThe earliest possible block to return. If null, the search can extend to the genesis block.
Returns
A non-null pointer to the earliest block between upper_block and lower_block, inclusive, such that every block between the returned block and upper_block has status_mask flags set. True if any block files have ever been pruned.

Definition at line 397 of file blockstorage.h.

◆ m_importing

std::atomic<bool> node::BlockManager::m_importing {false}

Definition at line 267 of file blockstorage.h.

◆ m_interrupt

const util::SignalInterrupt& node::BlockManager::m_interrupt

Definition at line 266 of file blockstorage.h.

◆ m_opts

const kernel::BlockManagerOpts node::BlockManager::m_opts
private

Definition at line 256 of file blockstorage.h.

◆ m_prune_mode

const bool node::BlockManager::m_prune_mode
private

Definition at line 236 of file blockstorage.h.

◆ m_snapshot_height

std::optional<int> node::BlockManager::m_snapshot_height

The height of the base block of an assumeutxo snapshot, if one is in use.

This controls how blockfiles are segmented by chainstate type to avoid comingling different height regions of the chain when an assumedvalid chainstate is in use. If heights are drastically different in the same blockfile, pruning suffers.

This is set during ActivateSnapshot() or upon LoadBlockIndex() if a snapshot had been previously loaded. After the snapshot is validated, this is unset to restore normal LoadBlockIndex behavior.

Definition at line 291 of file blockstorage.h.

◆ m_undo_file_seq

const FlatFileSeq node::BlockManager::m_undo_file_seq
private

Definition at line 259 of file blockstorage.h.

◆ m_xor_key

const std::vector<std::byte> node::BlockManager::m_xor_key
private

Definition at line 238 of file blockstorage.h.

◆ OpenBlockFile

AutoFile node::BlockManager::OpenBlockFile

Check whether the block associated with this index entry is pruned or not.

Create or update a prune lock identified by its name Open a block file (blk?????.dat)

Definition at line 406 of file blockstorage.h.

◆ PRUNE_TARGET_MANUAL

constexpr auto node::BlockManager::PRUNE_TARGET_MANUAL {std::numeric_limits<uint64_t>::max()}
staticconstexpr

Definition at line 353 of file blockstorage.h.

◆ WriteBlock

FlatFilePos node::BlockManager::WriteBlock

Store block on disk and update block file statistics.

Parameters
[in]blockthe block to be stored
[in]nHeightthe height of the block
Returns
in case of success, the position to which the block was written to in case of an error, an empty FlatFilePos

Definition at line 338 of file blockstorage.h.


The documentation for this class was generated from the following files: