[#kernel]
= kernel
:mrdocs:

Kernel library components for validating blocks and maintaining chain state&period;

== Types

[cols="1,4"]
|===
| Name| Description
| xref:kernel/BlockManagerOpts.adoc[`BlockManagerOpts`] 
| An options struct for `BlockManager`, more ergonomically referred to as `BlockManager&colon;&colon;Options` due to the using&hyphen;declaration in `BlockManager`&period;
| xref:kernel/BlockTreeDB.adoc[`BlockTreeDB`] 
| Access to the block database (blocks&sol;index&sol;)
| xref:kernel/CBlockFileInfo.adoc[`CBlockFileInfo`] 
| On&hyphen;disk statistics describing the contents of one block file&period;
| xref:kernel/CCoinsStats.adoc[`CCoinsStats`] 
| Aggregate statistics computed over the UTXO set&period;
| xref:kernel/CacheSizes.adoc[`CacheSizes`] 
| Byte budgets for the validation caches, derived from a single total&period;
| xref:kernel/ChainstateManagerOpts.adoc[`ChainstateManagerOpts`] 
| An options struct for `ChainstateManager`, more ergonomically referred to as `ChainstateManager&colon;&colon;Options` due to the using&hyphen;declaration in `ChainstateManager`&period;
| xref:kernel/ChainstateRole.adoc[`ChainstateRole`] 
| Identifies which chainstate (active or background) a notification refers to&period;
| xref:kernel/Context.adoc[`Context`] 
| Process&hyphen;wide context owning the libbitcoin&lowbar;kernel global state&period;
| xref:kernel/Interrupted.adoc[`Interrupted`] 
| Result type for use with std&colon;&colon;variant to indicate that an operation should be interrupted&period;
| xref:kernel/MemPoolLimits.adoc[`MemPoolLimits`] 
| Options struct containing limit options for a CTxMemPool&period; Default constructor populates the struct with sane default values which can be modified&period;
| xref:kernel/MemPoolOptions.adoc[`MemPoolOptions`] 
| Tunable options controlling memory&hyphen;pool acceptance and limits&period;
| xref:kernel/Notifications.adoc[`Notifications`] 
| A base class defining functions for notifying about certain kernel events&period;
|===


== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:kernel/InterruptResult.adoc[`InterruptResult`] 
| Simple result type for functions that need to propagate an interrupt status and don&apos;t have other return values&period;
|===


== Enums

[cols="1,4"]
|===
| Name| Description
| xref:kernel/CoinStatsHashType.adoc[`CoinStatsHashType`] 
| Selects the hashing scheme used to summarize the UTXO set&period;
| xref:kernel/Warning.adoc[`Warning`] 
| Categories of node warning raised by the validation kernel&period;
|===


== Functions

[cols="1,4"]
|===
| Name| Description
| xref:kernel/ApplyCoinHash.adoc[`ApplyCoinHash`] 
| Folds a coin into the running MuHash of the UTXO set&period;
| xref:kernel/ComputeUTXOStats.adoc[`ComputeUTXOStats`] 
| Computes aggregate statistics over the UTXO set&period;
| xref:kernel/GetBogoSize.adoc[`GetBogoSize`] 
| Computes the serialization&hyphen;agnostic size measure of an output script&period;
| xref:kernel/IsInterrupted.adoc[`IsInterrupted`] 
| Tests whether a variant result holds the Interrupted alternative&period;
| xref:kernel/MakeBlockInfo.adoc[`MakeBlockInfo`] 
| Builds block metadata from a block index entry&period;
| xref:kernel/RemoveCoinHash.adoc[`RemoveCoinHash`] 
| Removes a coin from the running MuHash of the UTXO set&period;
| xref:kernel/SanityChecks.adoc[`SanityChecks`] 
| Ensure a usable environment with all necessary library support&period;
| xref:kernel/operator_lshift.adoc[`operator&lt;&lt;`] 
| Writes a human&hyphen;readable form of a chainstate role to a stream&period;
|===


== Variables

[cols="1,4"]
|===
| Name| Description
| xref:kernel/DEFAULT_XOR_BLOCKSDIR.adoc[`DEFAULT&lowbar;XOR&lowbar;BLOCKSDIR`] 
| Default for whether block files are obfuscated (XOR&hyphen;ed) on disk&period;
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
