BFFastAdd may be set to indicate that several checks can be avoided for the block since it is already known to fit into the chain due to already proving it correct links into the chain up to a known checkpoint.
BFMagneticAnomaly signals that the magnetic anomaly hardfork is active and the block should be validated according the new rule set.
BFNoDupBlockCheck signals if the block should skip existence checks.
BFNone is a convenience value to specifically indicate no flags.
BFNoPoWCheck may be set to indicate the proof of work check which ensures a block hashes to a value less than the required target will not be performed.
CheckpointConfirmations is the number of blocks before the end of the current best block chain that a good checkpoint candidate must be.
DifficultyAdjustmentWindow is the size of the window used by the DAA adjustment algorithm when calculating the current difficulty.
DifficultyDAA (Difficulty Adjustment Algorithm) is the current Bitcoin Cash difficulty algorithm in effect since Novemeber 15th, 2017.
DifficultyEDA (Emergency Difficulty Adjustment) was a short lived changed right after the August 1st, 2017 hardfork and lasted until November 15th, 2017.
DifficultyLegacy was in effect from genesis through August 1st, 2017.
ErrBadCheckpoint indicates a block that is expected to be at a checkpoint height does not match the expected one.
ErrBadCoinbaseHeight indicates the serialized block height in the coinbase transaction for version 2 and higher blocks does not match the expected value.
ErrBadCoinbaseScriptLen indicates the length of the signature script for a coinbase transaction is not within the valid range.
ErrBadCoinbaseValue indicates the amount of a coinbase value does not match the expected value of the subsidy plus the sum of all fees.
ErrBadFees indicates the total fees for a block are invalid due to exceeding the maximum possible value.
ErrBadMerkleRoot indicates the calculated merkle root does not match the expected value.
ErrBadTxInput indicates a transaction input is invalid in some way such as referencing a previous transaction outpoint which is out of range or not referencing one at all.
ErrBadTxOutValue indicates an output value for a transaction is invalid in some way such as being out of range.
ErrBlockTooBig indicates the serialized block size exceeds the maximum allowed size.
ErrBlockTooSmall indicates the serialized block size is less than the minimum allowed size.
ErrBlockVersionTooOld indicates the block version is too old and is no longer accepted since the majority of the network has upgraded to a newer version.
ErrCheckpointTimeTooOld indicates a block has a timestamp before the most recent checkpoint.
ErrDifficultyTooLow indicates the difficulty for the block is lower than the difficulty required by the most recent checkpoint.
ErrDuplicateBlock indicates a block with the same hash already exists.
ErrDuplicateTx indicates a block contains an identical transaction (or at least two transactions which hash to the same value).
ErrDuplicateTxInputs indicates a transaction references the same input more than once.
ErrFirstTxNotCoinbase indicates the first transaction in a block is not a coinbase transaction.
ErrForkTooOld indicates a block is attempting to fork the block chain before the most recent checkpoint.
ErrHighHash indicates the block does not hash to a value which is lower than the required target difficultly.
ErrImmatureSpend indicates a transaction is attempting to spend a coinbase that has not yet reached the required maturity.
ErrInvalidAncestorBlock indicates that an ancestor of this block has already failed validation.
ErrInvalidTime indicates the time in the passed block has a precision that is more than one second.
ErrInvalidTxOrder indicates the order of the transactions in the block does not follow the active transaction ordering consensus rule.
ErrMissingCoinbaseHeight indicates the coinbase transaction for a block does not start with the serialized block block height as required for version 2 and higher blocks.
ErrMissingTxOut indicates a transaction output referenced by an input that does not exist.
ErrMultipleCoinbases indicates a block contains more than one coinbase transaction.
ErrNoTransactions indicates the block does not have a least one transaction.
ErrNoTxInputs indicates a transaction does not have any inputs.
ErrNoTxOutputs indicates a transaction does not have any outputs.
ErrOverwriteTx indicates a block contains a transaction that has the same hash as a previous transaction which has not been fully spent.
ErrPrevBlockNotBest indicates that the block's previous block is not the current chain tip.
ErrPreviousBlockUnknown indicates that the previous block is not known.
ErrScriptMalformed indicates a transaction script is malformed in some way.
ErrScriptValidation indicates the result of executing transaction script failed.
ErrSpendTooHigh indicates a transaction is attempting to spend more value than the sum of all of its inputs.
ErrSpentTxOut indicates a transaction output referenced by an input that has already been spent.
ErrTimeTooNew indicates the time is too far in the future as compared the current time.
ErrTimeTooOld indicates the time is either before the median time of the last several blocks per the chain consensus rules or prior to the most recent checkpoint.
ErrTooManySigOps indicates the total number of signature operations for a transaction or block exceed the maximum allowed limits.
ErrTxTooBig indicates a transaction exceeds the maximum allowed size when serialized.
ErrTxTooManySigOps indicates a transaction exceeds the maximum allowable number of signature operations.
ErrTxTooSmall indicates a transaction is smaller than the minimum allowed size when serialized.
ErrUnexpectedDifficulty indicates specified bits do not align with the expected value either because it doesn't match the calculated valued based on difficulty regarted rules or it is out of the valid range.
ErrUnfinalizedTx indicates a transaction has not been finalized.
FlushIfNeeded is the flush mode that means a flush must be performed only if the cache is exceeding a safety threshold very close to its maximum size.
FlushPeriodic is the flush mode that means a flush can be performed when it would be almost needed.
FlushRequired is the flush mode that means a flush must be performed regardless of the cache state.
LegacyMaxBlockSize is the maximum number of bytes allowed in a block prior to the August 1st, 2018 UAHF hardfork.
MaxBlockSigOpsPerMB is the maximum number of allowed sigops allowed per one (or partial) megabyte of block size after the UAHF hard fork.
MaxCoinbaseScriptLen is the maximum length a coinbase script can be.
MaxTimeOffsetSeconds is the maximum number of seconds a block time is allowed to be ahead of the current time.
MaxTransactionSigOps is the maximum allowable number of sigops per transaction after the UAHF hard fork.
MaxTransactionSize is the maximum allowable size of a transaction after the UAHF hard fork.
MinCoinbaseScriptLen is the minimum length a coinbase script can be.
MinTransactionSize is the minimum transaction size allowed on the network after the magneticanomaly hardfork.
NTBlockAccepted indicates the associated block was accepted into the block chain.
NTBlockConnected indicates the associated block was connected to the main chain.
NTBlockDisconnected indicates the associated block was disconnected from the main chain.
ThresholdActive is the state for a deployment for all blocks after a retarget period in which the deployment was in the ThresholdLockedIn state.
ThresholdDefined is the first state for each deployment and is the state for the genesis block has by definition for all deployments.
ThresholdFailed is the state for a deployment once its expiration time has been reached and it did not reach the ThresholdLockedIn state.
ThresholdLockedIn is the state for a deployment during the retarget period which is after the ThresholdStarted state period and the number of blocks that have voted for the deployment equal or exceed the required number of votes for the deployment.
ThresholdStarted is the state for a deployment once its start time has been reached.