| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
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
- class BlockSupportsSanityCheck blk where
- data SanityCheckIssue
- checkSecurityParamConsistency ∷ BlockSupportsSanityCheck blk ⇒ TopLevelConfig blk → Maybe SanityCheckIssue
- sanityCheckConfig ∷ BlockSupportsSanityCheck blk ⇒ TopLevelConfig blk → [SanityCheckIssue]
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
configAllSecurityParams ∷ TopLevelConfig 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.
Instances
| CanHardFork xs ⇒ BlockSupportsSanityCheck (HardForkBlock xs) Source # | |
Defined in Ouroboros.Consensus.HardFork.Combinator.Node.SanityCheck Methods configAllSecurityParams ∷ TopLevelConfig (HardForkBlock xs) → NonEmpty SecurityParam Source # | |
data SanityCheckIssue Source #
An issue found in the consensus configuration. 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. |
| SnapshotDelayRangeInverted | The configured |
| SnapshotDelayRangeNegativeMinimum | The configured |
Fields
| |
| SnapshotRateLimitDisabled | The configured |
| SnapshotRateLimitSuspiciouslyLarge | The configured |
Fields
| |
| SnapshotNumZero | The configured number of on-disk snapshots to keep is zero. Snapshots will be written to disk and then immediately deleted, leaving nothing for crash recovery. The node will have to replay from genesis on every unclean restart. |
| SnapshotIntervalNotDivisorOfEpoch | The configured snapshot interval does not divide 432000 (the Cardano mainnet epoch length in slots). Snapshots will not land on epoch boundaries, breaking Mithril compatibility. |
Fields
| |
Instances
| Exception SanityCheckIssue Source # | |
| Show SanityCheckIssue Source # | |
Defined in Ouroboros.Consensus.Block.SupportsSanityCheck Methods showsPrec ∷ Int → SanityCheckIssue → ShowS # show ∷ SanityCheckIssue → String # showList ∷ [SanityCheckIssue] → ShowS # | |
| Eq SanityCheckIssue Source # | |
Defined in Ouroboros.Consensus.Block.SupportsSanityCheck Methods | |
checkSecurityParamConsistency ∷ BlockSupportsSanityCheck 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.
sanityCheckConfig ∷ BlockSupportsSanityCheck blk ⇒ TopLevelConfig blk → [SanityCheckIssue] Source #
Run all supported sanity checks on a given TopLevelConfig.