Bitcoin Core 28.99.0
P2P Digital Currency
|
Classes | |
struct | AncestorFeerateComparator |
class | BlockAssembler |
Generate a new block, without valid proof-of-work. More... | |
struct | BlockCreateOptions |
struct | BlockfileCursor |
class | BlockManager |
Maintains a tree of blocks (stored in m_block_index ) which is consulted to determine where the most-work tip is. More... | |
struct | CacheSizes |
struct | CBlockIndexHeightOnlyComparator |
struct | CBlockIndexWorkComparator |
struct | CBlockTemplate |
struct | ChainstateLoadOptions |
struct | CompareCTxMemPoolIter |
Comparator for CTxMemPool::txiter objects. More... | |
struct | CompareTxIterByAncestorCount |
struct | CTxMemPoolModifiedEntry |
struct | CTxMemPoolModifiedEntry_Indices |
class | ImportingNow |
struct | ImportMempoolOptions |
struct | IteratorComparator |
class | KernelNotifications |
class | MiniMiner |
A minimal version of BlockAssembler, using the same ancestor set scoring algorithm. More... | |
class | MiniMinerMempoolEntry |
struct | modifiedentry_iter |
struct | NodeContext |
NodeContext struct containing references to chain state and connection state. More... | |
struct | PackageToValidate |
struct | PruneLockInfo |
struct | PSBTAnalysis |
Holds the results of AnalyzePSBT (miscellaneous information about a PSBT) More... | |
struct | PSBTInputAnalysis |
Holds an analysis of one input from a PSBT. More... | |
struct | RejectedTxTodo |
class | SnapshotMetadata |
Metadata describing a serialized version of a UTXO set from which an assumeutxo Chainstate can be constructed. More... | |
struct | TxDownloadConnectionInfo |
class | TxDownloadManager |
Class responsible for deciding what transactions to request and, once downloaded, whether and how to validate them. More... | |
class | TxDownloadManagerImpl |
struct | TxDownloadOptions |
struct | update_for_parent_inclusion |
class | Warnings |
Manages warning messages within a node. More... | |
Typedefs | |
using | BlockMap = std::unordered_map< uint256, CBlockIndex, BlockHasher > |
using | ChainstateLoadResult = std::tuple< ChainstateLoadStatus, bilingual_str > |
Chainstate load status code and optional error string. More... | |
typedef boost::multi_index_container< CTxMemPoolModifiedEntry, CTxMemPoolModifiedEntry_Indices > | indexed_modified_transaction_set |
typedef indexed_modified_transaction_set::nth_index< 0 >::type::iterator | modtxiter |
typedef indexed_modified_transaction_set::index< ancestor_score >::type::iterator | modtxscoreiter |
Enumerations | |
enum | BlockfileType { NORMAL = 0 , ASSUMED = 1 , NUM_TYPES = 2 } |
enum class | ChainstateLoadStatus { SUCCESS , FAILURE , FAILURE_FATAL , FAILURE_INCOMPATIBLE_DB , FAILURE_INSUFFICIENT_DBCACHE , INTERRUPTED } |
Chainstate load status. More... | |
enum class | TransactionError { OK , MISSING_INPUTS , ALREADY_IN_UTXO_SET , MEMPOOL_REJECTED , MEMPOOL_ERROR , MAX_FEE_EXCEEDED , MAX_BURN_EXCEEDED , INVALID_PACKAGE } |
enum class | Warning { CLOCK_OUT_OF_SYNC , PRE_RELEASE_TEST_BUILD , FATAL_INTERNAL_ERROR } |
Functions | |
void | AbortNode (const std::function< bool()> &shutdown_request, std::atomic< int > &exit_status, const bilingual_str &message, node::Warnings *warnings) |
util::Result< void > | ApplyArgsManOptions (const ArgsManager &args, BlockManager::Options &opts) |
static auto | InitBlocksdirXorKey (const BlockManager::Options &opts) |
void | ImportBlocks (ChainstateManager &chainman, std::span< const fs::path > import_paths) |
std::ostream & | operator<< (std::ostream &os, const BlockfileType &type) |
std::ostream & | operator<< (std::ostream &os, const BlockfileCursor &cursor) |
CacheSizes | CalculateCacheSizes (const ArgsManager &args, size_t n_indexes) |
static ChainstateLoadResult | CompleteChainstateInitialization (ChainstateManager &chainman, const CacheSizes &cache_sizes, const ChainstateLoadOptions &options) EXCLUSIVE_LOCKS_REQUIRED( |
ChainstateLoadResult | LoadChainstate (ChainstateManager &chainman, const CacheSizes &cache_sizes, const ChainstateLoadOptions &options) |
This sequence can have 4 types of outcomes: More... | |
ChainstateLoadResult | VerifyLoadedChainstate (ChainstateManager &chainman, const ChainstateLoadOptions &options) |
util::Result< void > | ApplyArgsManOptions (const ArgsManager &args, ChainstateManager::Options &opts) |
void | FindCoins (const node::NodeContext &node, std::map< COutPoint, Coin > &coins) |
Look up unspent output information. More... | |
void | ReadCoinsViewArgs (const ArgsManager &args, CoinsViewOptions &options) |
void | ReadDatabaseArgs (const ArgsManager &args, DBOptions &options) |
void | ReadNotificationArgs (const ArgsManager &args, KernelNotifications ¬ifications) |
bool | LoadMempool (CTxMemPool &pool, const fs::path &load_path, Chainstate &active_chainstate, ImportMempoolOptions &&opts) |
Import the file and attempt to add its contents to the mempool. More... | |
bool | DumpMempool (const CTxMemPool &pool, const fs::path &dump_path, FopenFn mockable_fopen_function, bool skip_file_commit) |
bool | DumpMempool (const CTxMemPool &pool, const fs::path &dump_path, fsbridge::FopenFn mockable_fopen_function=fsbridge::fopen, bool skip_file_commit=false) |
Dump the mempool to a file. More... | |
bool | ShouldPersistMempool (const ArgsManager &argsman) |
fs::path | MempoolPath (const ArgsManager &argsman) |
int64_t | UpdateTime (CBlockHeader *pblock, const Consensus::Params &consensusParams, const CBlockIndex *pindexPrev) |
void | RegenerateCommitments (CBlock &block, ChainstateManager &chainman) |
Update an old GenerateCoinbaseCommitment from CreateNewBlock after the block txs have changed. More... | |
static BlockAssembler::Options | ClampOptions (BlockAssembler::Options options) |
void | ApplyArgsManOptions (const ArgsManager &gArgs, BlockAssembler::Options &options) |
Apply -blockmintxfee and -blockmaxweight options from ArgsManager to BlockAssembler options. More... | |
static int | UpdatePackagesForAdded (const CTxMemPool &mempool, const CTxMemPool::setEntries &alreadyAdded, indexed_modified_transaction_set &mapModifiedTx) EXCLUSIVE_LOCKS_REQUIRED(mempool.cs) |
Add descendants of given transactions to mapModifiedTx with ancestor state updated assuming given transactions are inBlock. More... | |
Minisketch | MakeMinisketch32 (size_t capacity) |
Wrapper around Minisketch::Minisketch(32, implementation, capacity). More... | |
Minisketch | MakeMinisketch32FP (size_t max_elements, uint32_t fpbits) |
Wrapper around Minisketch::CreateFP. More... | |
void | ApplyArgsManOptions (const ArgsManager &argsman, PeerManager::Options &options) |
PSBTAnalysis | AnalyzePSBT (PartiallySignedTransaction psbtx) |
Provides helpful miscellaneous information about where a PSBT is in the signing workflow. More... | |
static TransactionError | HandleATMPError (const TxValidationState &state, std::string &err_string_out) |
TransactionError | BroadcastTransaction (NodeContext &node, CTransactionRef tx, std::string &err_string, const CAmount &max_tx_fee, bool relay, bool wait_callback) |
Submit a transaction to the mempool and (optionally) relay it to all P2P peers. More... | |
CTransactionRef | GetTransaction (const CBlockIndex *const block_index, const CTxMemPool *const mempool, const uint256 &hash, uint256 &hashBlock, const BlockManager &blockman) |
Return transaction with a given hash. More... | |
bool | WriteSnapshotBaseBlockhash (Chainstate &snapshot_chainstate) |
std::optional< uint256 > | ReadSnapshotBaseBlockhash (fs::path chaindir) |
std::optional< fs::path > | FindSnapshotChainstateDir (const fs::path &data_dir) |
Return a path to the snapshot-based chainstate dir, if one exists. More... | |
UniValue | GetWarningsForRpc (const Warnings &warnings, bool use_deprecated) |
RPC helper function that wraps warnings.GetMessages(). More... | |
Variables | |
static const unsigned int | BLOCKFILE_CHUNK_SIZE = 0x1000000 |
The pre-allocation chunk size for blk?????.dat files (since 0.8) More... | |
static const unsigned int | UNDOFILE_CHUNK_SIZE = 0x100000 |
The pre-allocation chunk size for rev?????.dat files (since 0.8) More... | |
static const unsigned int | MAX_BLOCKFILE_SIZE = 0x8000000 |
The maximum size of a blk?????.dat file (since 0.8) More... | |
static constexpr size_t | BLOCK_SERIALIZATION_HEADER_SIZE = std::tuple_size_v<MessageStartChars> + sizeof(unsigned int) |
Size of header written by WriteBlockToDisk before a serialized CBlock. More... | |
static constexpr int | DEFAULT_STOPATHEIGHT {0} |
static const uint64_t | MEMPOOL_DUMP_VERSION_NO_XOR_KEY {1} |
static const uint64_t | MEMPOOL_DUMP_VERSION {2} |
static constexpr bool | DEFAULT_PERSIST_MEMPOOL {true} |
Default for -persistmempool, indicating whether the node should attempt to automatically load the mempool on start and save to disk on shutdown. More... | |
static const bool | DEFAULT_PRINT_MODIFIED_FEE = false |
static const CFeeRate | DEFAULT_MAX_RAW_TX_FEE_RATE {COIN / 10} |
Maximum fee rate for sendrawtransaction and testmempoolaccept RPC calls. More... | |
static const CAmount | DEFAULT_MAX_BURN_AMOUNT {0} |
Maximum burn value for sendrawtransaction, submitpackage, and testmempoolaccept RPC calls. More... | |
static constexpr int32_t | MAX_PEER_TX_REQUEST_IN_FLIGHT = 100 |
Maximum number of in-flight transaction requests from a peer. More... | |
static constexpr int32_t | MAX_PEER_TX_ANNOUNCEMENTS = 5000 |
Maximum number of transactions to consider for requesting, per peer. More... | |
static constexpr auto | TXID_RELAY_DELAY {2s} |
How long to delay requesting transactions via txids, if we have wtxid-relaying peers. More... | |
static constexpr auto | NONPREF_PEER_TX_DELAY {2s} |
How long to delay requesting transactions from non-preferred peers. More... | |
static constexpr auto | OVERLOADED_PEER_TX_DELAY {2s} |
How long to delay requesting transactions from overloaded peers (see MAX_PEER_TX_REQUEST_IN_FLIGHT). More... | |
static constexpr auto | GETDATA_TX_INTERVAL {60s} |
How long to wait before downloading a transaction from an additional peer. More... | |
const fs::path | SNAPSHOT_BLOCKHASH_FILENAME {"base_blockhash"} |
The file in the snapshot chainstate dir which stores the base blockhash. More... | |
bool WriteSnapshotBaseBlockhash(Chainstate &snapshot_chainstate) EXCLUSIVE_LOCKS_REQUIRED(std::optional< uint256 > ReadSnapshotBaseBlockhash(fs::path chaindir) EXCLUSIVE_LOCKS_REQUIRED(constexpr std::string_view | SNAPSHOT_CHAINSTATE_SUFFIX = "_snapshot" |
Write out the blockhash of the snapshot base block that was used to construct this chainstate. More... | |
using node::BlockMap = typedef std::unordered_map<uint256, CBlockIndex, BlockHasher> |
Definition at line 84 of file blockstorage.h.
using node::ChainstateLoadResult = typedef std::tuple<ChainstateLoadStatus, bilingual_str> |
Chainstate load status code and optional error string.
Definition at line 57 of file chainstate.h.
typedef boost::multi_index_container< CTxMemPoolModifiedEntry, CTxMemPoolModifiedEntry_Indices> node::indexed_modified_transaction_set |
typedef indexed_modified_transaction_set::nth_index<0>::type::iterator node::modtxiter |
typedef indexed_modified_transaction_set::index<ancestor_score>::type::iterator node::modtxscoreiter |
enum node::BlockfileType |
Enumerator | |
---|---|
NORMAL | |
ASSUMED | |
NUM_TYPES |
Definition at line 99 of file blockstorage.h.
|
strong |
Chainstate load status.
Simple applications can just check for the success case, and treat other cases as errors. More complex applications may want to try reindexing in the generic failure case, and pass an interrupt callback and exit cleanly in the interrupted case.
Enumerator | |
---|---|
SUCCESS | |
FAILURE | Generic failure which reindexing may fix. |
FAILURE_FATAL | Fatal error which should not prompt to reindex. |
FAILURE_INCOMPATIBLE_DB | |
FAILURE_INSUFFICIENT_DBCACHE | |
INTERRUPTED |
Definition at line 47 of file chainstate.h.
|
strong |
|
strong |
Enumerator | |
---|---|
CLOCK_OUT_OF_SYNC | |
PRE_RELEASE_TEST_BUILD | |
FATAL_INTERNAL_ERROR |
Definition at line 23 of file warnings.h.
void node::AbortNode | ( | const std::function< bool()> & | shutdown_request, |
std::atomic< int > & | exit_status, | ||
const bilingual_str & | message, | ||
node::Warnings * | warnings | ||
) |
PSBTAnalysis node::AnalyzePSBT | ( | PartiallySignedTransaction | psbtx | ) |
Provides helpful miscellaneous information about where a PSBT is in the signing workflow.
[in] | psbtx | the PSBT to analyze |
Definition at line 16 of file psbt.cpp.
util::Result< void > node::ApplyArgsManOptions | ( | const ArgsManager & | args, |
BlockManager::Options & | opts | ||
) |
Definition at line 17 of file blockmanager_args.cpp.
util::Result< void > node::ApplyArgsManOptions | ( | const ArgsManager & | args, |
ChainstateManager::Options & | opts | ||
) |
void node::ApplyArgsManOptions | ( | const ArgsManager & | argsman, |
PeerManager::Options & | options | ||
) |
void node::ApplyArgsManOptions | ( | const ArgsManager & | args, |
BlockAssembler::Options & | options | ||
) |
Apply -blockmintxfee and -blockmaxweight options from ArgsManager to BlockAssembler options.
Definition at line 86 of file miner.cpp.
TransactionError node::BroadcastTransaction | ( | NodeContext & | node, |
CTransactionRef | tx, | ||
std::string & | err_string, | ||
const CAmount & | max_tx_fee, | ||
bool | relay, | ||
bool | wait_callback | ||
) |
Submit a transaction to the mempool and (optionally) relay it to all P2P peers.
Mempool submission can be synchronous (will await mempool entry notification over the CValidationInterface) or asynchronous (will submit and not wait for notification), depending on the value of wait_callback. wait_callback MUST NOT be set while cs_main, cs_mempool or cs_wallet are held to avoid deadlock.
[in] | node | reference to node context |
[in] | tx | the transaction to broadcast |
[out] | err_string | reference to std::string to fill with error string if available |
[in] | max_tx_fee | reject txs with fees higher than this (if 0, accept any fee) |
[in] | relay | flag if both mempool insertion and p2p relay are requested |
[in] | wait_callback | wait until callbacks have been processed to avoid stale result due to a sequentially RPC. return error |
Definition at line 34 of file transaction.cpp.
CacheSizes node::CalculateCacheSizes | ( | const ArgsManager & | args, |
size_t | n_indexes | ||
) |
Definition at line 12 of file caches.cpp.
|
static |
|
static |
Definition at line 35 of file chainstate.cpp.
bool node::DumpMempool | ( | const CTxMemPool & | pool, |
const fs::path & | dump_path, | ||
FopenFn | mockable_fopen_function, | ||
bool | skip_file_commit | ||
) |
Definition at line 149 of file mempool_persist.cpp.
bool node::DumpMempool | ( | const CTxMemPool & | pool, |
const fs::path & | dump_path, | ||
fsbridge::FopenFn | mockable_fopen_function = fsbridge::fopen , |
||
bool | skip_file_commit = false |
||
) |
Dump the mempool to a file.
void node::FindCoins | ( | const node::NodeContext & | node, |
std::map< COutPoint, Coin > & | coins | ||
) |
Look up unspent output information.
Returns coins in the mempool and in the current chain UTXO set. Iterates through all the keys in the map and populates the values.
[in] | node | The node context to use for lookup |
[in,out] | coins | map to fill |
Definition at line 12 of file coin.cpp.
Return a path to the snapshot-based chainstate dir, if one exists.
Definition at line 84 of file utxo_snapshot.cpp.
CTransactionRef node::GetTransaction | ( | const CBlockIndex *const | block_index, |
const CTxMemPool *const | mempool, | ||
const uint256 & | hash, | ||
uint256 & | hashBlock, | ||
const BlockManager & | blockman | ||
) |
Return transaction with a given hash.
If mempool is provided and block_index is not provided, check it first for the tx. If -txindex is available, check it next for the tx. Finally, if block_index is provided, check for tx by reading entire block from disk.
[in] | block_index | The block to read from disk, or nullptr |
[in] | mempool | If provided, check mempool for tx |
[in] | hash | The txid |
[out] | hashBlock | The block hash, if the tx was found via -txindex or block_index |
Definition at line 126 of file transaction.cpp.
RPC helper function that wraps warnings.GetMessages().
Returns a UniValue::VSTR with the latest warning if use_deprecated is set to true, or a UniValue::VARR with all warnings otherwise.
Definition at line 54 of file warnings.cpp.
|
static |
Definition at line 21 of file transaction.cpp.
void node::ImportBlocks | ( | ChainstateManager & | chainman, |
std::span< const fs::path > | import_paths | ||
) |
Definition at line 1205 of file blockstorage.cpp.
|
static |
ChainstateLoadResult node::LoadChainstate | ( | ChainstateManager & | chainman, |
const CacheSizes & | cache_sizes, | ||
const ChainstateLoadOptions & | options | ||
) |
This sequence can have 4 types of outcomes:
LoadChainstate returns a (status code, error string) tuple.
Definition at line 173 of file chainstate.cpp.
bool node::LoadMempool | ( | CTxMemPool & | pool, |
const fs::path & | load_path, | ||
Chainstate & | active_chainstate, | ||
ImportMempoolOptions && | opts | ||
) |
Import the file and attempt to add its contents to the mempool.
Definition at line 41 of file mempool_persist.cpp.
Minisketch node::MakeMinisketch32 | ( | size_t | capacity | ) |
Wrapper around Minisketch::Minisketch(32, implementation, capacity).
Definition at line 70 of file minisketchwrapper.cpp.
Minisketch node::MakeMinisketch32FP | ( | size_t | max_elements, |
uint32_t | fpbits | ||
) |
Wrapper around Minisketch::CreateFP.
Definition at line 75 of file minisketchwrapper.cpp.
fs::path node::MempoolPath | ( | const ArgsManager & | argsman | ) |
Definition at line 18 of file mempool_persist_args.cpp.
std::ostream & node::operator<< | ( | std::ostream & | os, |
const BlockfileCursor & | cursor | ||
) |
Definition at line 1278 of file blockstorage.cpp.
std::ostream & node::operator<< | ( | std::ostream & | os, |
const BlockfileType & | type | ||
) |
Definition at line 1269 of file blockstorage.cpp.
void node::ReadCoinsViewArgs | ( | const ArgsManager & | args, |
CoinsViewOptions & | options | ||
) |
void node::ReadDatabaseArgs | ( | const ArgsManager & | args, |
DBOptions & | options | ||
) |
Definition at line 11 of file database_args.cpp.
void node::ReadNotificationArgs | ( | const ArgsManager & | args, |
KernelNotifications & | notifications | ||
) |
Definition at line 110 of file kernel_notifications.cpp.
Definition at line 49 of file utxo_snapshot.cpp.
void node::RegenerateCommitments | ( | CBlock & | block, |
ChainstateManager & | chainman | ||
) |
bool node::ShouldPersistMempool | ( | const ArgsManager & | argsman | ) |
Definition at line 13 of file mempool_persist_args.cpp.
|
static |
int64_t node::UpdateTime | ( | CBlockHeader * | pblock, |
const Consensus::Params & | consensusParams, | ||
const CBlockIndex * | pindexPrev | ||
) |
ChainstateLoadResult node::VerifyLoadedChainstate | ( | ChainstateManager & | chainman, |
const ChainstateLoadOptions & | options | ||
) |
Definition at line 258 of file chainstate.cpp.
bool node::WriteSnapshotBaseBlockhash | ( | Chainstate & | snapshot_chainstate | ) |
Definition at line 23 of file utxo_snapshot.cpp.
|
staticconstexpr |
Size of header written by WriteBlockToDisk before a serialized CBlock.
Definition at line 78 of file blockstorage.h.
|
static |
The pre-allocation chunk size for blk?????.dat files (since 0.8)
Definition at line 71 of file blockstorage.h.
|
static |
Maximum burn value for sendrawtransaction, submitpackage, and testmempoolaccept RPC calls.
By default, a transaction with a burn value higher than this will be rejected by these RPCs and the GUI. This can be overridden with the maxburnamount argument.
Definition at line 33 of file transaction.h.
Maximum fee rate for sendrawtransaction and testmempoolaccept RPC calls.
Also used by the GUI when broadcasting a completed PSBT. By default, a transaction with a fee rate higher than this will be rejected by these RPCs and the GUI. This can be overridden with the maxfeerate argument.
Definition at line 27 of file transaction.h.
|
staticconstexpr |
Default for -persistmempool, indicating whether the node should attempt to automatically load the mempool on start and save to disk on shutdown.
Definition at line 18 of file mempool_persist_args.h.
|
staticconstexpr |
Definition at line 30 of file kernel_notifications.h.
|
staticconstexpr |
How long to wait before downloading a transaction from an additional peer.
Definition at line 38 of file txdownloadman.h.
|
static |
The maximum size of a blk?????.dat file (since 0.8)
Definition at line 75 of file blockstorage.h.
|
staticconstexpr |
Maximum number of transactions to consider for requesting, per peer.
It provides a reasonable DoS limit to per-peer memory usage spent on announcements, while covering peers continuously sending INVs at the maximum rate (by our own policy, see INVENTORY_BROADCAST_PER_SECOND) for several minutes, while not receiving the actual transaction (from any peer) in response to requests for them.
Definition at line 30 of file txdownloadman.h.
|
staticconstexpr |
Maximum number of in-flight transaction requests from a peer.
It is not a hard limit, but the threshold at which point the OVERLOADED_PEER_TX_DELAY kicks in.
Definition at line 25 of file txdownloadman.h.
|
static |
Definition at line 39 of file mempool_persist.cpp.
|
static |
Definition at line 38 of file mempool_persist.cpp.
|
staticconstexpr |
How long to delay requesting transactions from non-preferred peers.
Definition at line 34 of file txdownloadman.h.
|
staticconstexpr |
How long to delay requesting transactions from overloaded peers (see MAX_PEER_TX_REQUEST_IN_FLIGHT).
Definition at line 36 of file txdownloadman.h.
const fs::path node::SNAPSHOT_BLOCKHASH_FILENAME {"base_blockhash"} |
The file in the snapshot chainstate dir which stores the base blockhash.
This is needed to reconstruct snapshot chainstates on init.
Because we only allow loading a single snapshot at a time, there will only be one chainstate directory with this filename present within it.
Definition at line 109 of file utxo_snapshot.h.
|
constexpr |
Write out the blockhash of the snapshot base block that was used to construct this chainstate.
This value is read in during subsequent initializations and used to reconstruct snapshot-based chainstates. Read the blockhash of the snapshot base block that was used to construct the chainstate. Suffix appended to the chainstate (leveldb) dir when created based upon a snapshot.
Definition at line 124 of file utxo_snapshot.h.
|
staticconstexpr |
How long to delay requesting transactions via txids, if we have wtxid-relaying peers.
Definition at line 32 of file txdownloadman.h.
|
static |
The pre-allocation chunk size for rev?????.dat files (since 0.8)
Definition at line 73 of file blockstorage.h.