ouroboros-consensus-0.21.0.0: Consensus layer for the Ouroboros blockchain protocol
Safe HaskellSafe-Inferred
LanguageHaskell2010

Ouroboros.Consensus.Block.SupportsSanityCheck

Description

This module adds support for sanity checking consensus configuration on node startup. These checks should primarily look for unusual configuration choices that may point to an accidentally-misconfigured node and quietly cause problems, rather than incoherent configurations that will result in fatal errors at a later point.

While in most situations they can be handled as fatal issues, there are situations when intentionally configuring a node "weirdly" can be useful, and so the user should be able to opt out of the sanity checks at their own peril.

Synopsis

Documentation

class BlockSupportsSanityCheck blk where Source #

BlockSupportsSanityCheck provides evidence that a block can be sanity checked for common issues on node startup. sanityCheckConfig, which runs performs each check and returns a list with each SanityCheckIssue found, should be preferred over using these methods directly.

Methods

configAllSecurityParamsTopLevelConfig blk → NonEmpty SecurityParam Source #

Generate a NonEmpty list of security parameters for a given block type. For individual eras' block types, this is simply a singleton list containing the chosen SecurityParam, but combined block types (i.e. the HardForkCombinator) will return all of their constituent eras' configurations' security parameters.

data SanityCheckIssue Source #

An issue found in the TopLevelConfig for a block. See displayException for human-readable descriptions of each of these cases, especially when presenting these to users.

Constructors

InconsistentSecurityParam (NonEmpty SecurityParam)

Configuration contains multiple security parameters. This may cause strange behaviour around era boundaries.

checkSecurityParamConsistencyBlockSupportsSanityCheck blk ⇒ TopLevelConfig blk → Maybe SanityCheckIssue Source #

Check a TopLevelConfig for any inconsistency in constituent choices for SecurityParam (colloquially k). For a block type to be considered "sane" in this regard, its configuration's security parameter as well as all of its childrens' configurations (if applicable) should be the same.

sanityCheckConfigBlockSupportsSanityCheck blk ⇒ TopLevelConfig blk → [SanityCheckIssue] Source #

Run all supported sanity checks on a given TopLevelConfig.