Bitcoin Core  22.99.0
P2P Digital Currency
Classes | Namespaces | Typedefs | Functions | Variables
blockstorage.h File Reference
#include <fs.h>
#include <protocol.h>
#include <sync.h>
#include <txdb.h>
#include <atomic>
#include <cstdint>
#include <vector>
Include dependency graph for blockstorage.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


struct  node::CBlockIndexWorkComparator
class  node::BlockManager
 Maintains a tree of blocks (stored in m_block_index) which is consulted to determine where the most-work tip is. More...


 Transaction validation functions.


typedef std::unordered_map< uint256, CBlockIndex *, BlockHashernode::BlockMap


FILE * node::OpenBlockFile (const FlatFilePos &pos, bool fReadOnly=false)
 Open a block file (blk?????.dat) More...
fs::path node::GetBlockPosFilename (const FlatFilePos &pos)
 Translation to a filesystem path. More...
void node::UnlinkPrunedFiles (const std::set< int > &setFilesToPrune)
 Actually unlink the specified files. More...
bool node::ReadBlockFromDisk (CBlock &block, const FlatFilePos &pos, const Consensus::Params &consensusParams)
 Functions for disk access for blocks. More...
bool node::ReadBlockFromDisk (CBlock &block, const CBlockIndex *pindex, const Consensus::Params &consensusParams)
bool node::ReadRawBlockFromDisk (std::vector< uint8_t > &block, const FlatFilePos &pos, const CMessageHeader::MessageStartChars &message_start)
bool node::UndoReadFromDisk (CBlockUndo &blockundo, const CBlockIndex *pindex)
void node::ThreadImport (ChainstateManager &chainman, std::vector< fs::path > vImportFiles, const ArgsManager &args)


RecursiveMutex cs_main
 Mutex to guard access to validation specific variables, such as reading or changing the chainstate. More...
static constexpr bool node::DEFAULT_STOPAFTERBLOCKIMPORT {false}
static const unsigned int node::BLOCKFILE_CHUNK_SIZE = 0x1000000
 The pre-allocation chunk size for blk?????.dat files (since 0.8) More...
static const unsigned int node::UNDOFILE_CHUNK_SIZE = 0x100000
 The pre-allocation chunk size for rev?????.dat files (since 0.8) More...
static const unsigned int node::MAX_BLOCKFILE_SIZE = 0x8000000
 The maximum size of a blk?????.dat file (since 0.8) More...
std::atomic_bool node::fImporting
std::atomic_bool node::fReindex
bool IsBlockPruned(const CBlockIndex *pblockindex) EXCLUSIVE_LOCKS_REQUIRED(voi node::CleanupBlockRevFiles )()
 Check whether the block associated with this index entry is pruned or not. More...

Variable Documentation

◆ cs_main

RecursiveMutex cs_main

Mutex to guard access to validation specific variables, such as reading or changing the chainstate.

This may also need to be locked when updating the transaction pool, e.g. on AcceptToMemoryPool. See CTxMemPool::cs comment for details.

The transaction pool has a separate lock to allow reading from it and the chainstate at the same time.

Definition at line 138 of file validation.cpp.