| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Ouroboros.Consensus.Fragment.Diff
Description
Intended for qualified import
import Ouroboros.Consensus.Fragment.Diff (ChainDiff (..)) import qualified Ouroboros.Consensus.Fragment.Diff as Diff
Synopsis
- data ChainDiff b = ChainDiff {
- getRollback ∷ !Word64
- getSuffix ∷ !(AnchoredFragment b)
- getAnchorPoint ∷ ChainDiff b → Point b
- getTip ∷ HasHeader b ⇒ ChainDiff b → Point b
- rollbackExceedsSuffix ∷ (HasHeader b0, HasHeader b1, HasHeader b2, HeaderHash b0 ~ HeaderHash b1, HeaderHash b0 ~ HeaderHash b2) ⇒ PerasWeightSnapshot b0 → AnchoredFragment b1 → ChainDiff b2 → Bool
- diff ∷ (HasHeader b, HasHeader b', HeaderHash b ~ HeaderHash b', HasCallStack) ⇒ AnchoredFragment b' → AnchoredFragment b → ChainDiff b
- extend ∷ AnchoredFragment b → ChainDiff b
- apply ∷ HasHeader b ⇒ AnchoredFragment b → ChainDiff b → Maybe (AnchoredFragment b)
- map ∷ ∀ a b. (HasHeader b, HeaderHash a ~ HeaderHash b) ⇒ (a → b) → ChainDiff a → ChainDiff b
- append ∷ HasHeader b ⇒ ChainDiff b → b → ChainDiff b
- mapM ∷ ∀ a b m. (HasHeader b, HeaderHash a ~ HeaderHash b, Monad m) ⇒ (a → m b) → ChainDiff a → m (ChainDiff b)
- takeWhileOldest ∷ HasHeader b ⇒ (b → Bool) → ChainDiff b → ChainDiff b
- truncate ∷ (HasHeader b, HasCallStack) ⇒ Point b → ChainDiff b → ChainDiff b
Documentation
A diff of a chain (fragment).
Typical instantiations of the type argument b: a block type blk,
Header blk, HeaderFields, ..., anything that supports HasHeader.
Note: we allow the suffix to be shorter than the number of blocks to roll
back. In other words, applying a ChainDiff can result in a chain shorter
than the chain to which the diff was applied.
Constructors
| ChainDiff | |
Fields
| |
Queries
getAnchorPoint ∷ ChainDiff b → Point b Source #
Return the anchor point of the new suffix
rollbackExceedsSuffix Source #
Arguments
| ∷ (HasHeader b0, HasHeader b1, HasHeader b2, HeaderHash b0 ~ HeaderHash b1, HeaderHash b0 ~ HeaderHash b2) | |
| ⇒ PerasWeightSnapshot b0 | |
| → AnchoredFragment b1 | The chain |
| → ChainDiff b2 | |
| → Bool |
Constructors
Arguments
| ∷ (HasHeader b, HasHeader b', HeaderHash b ~ HeaderHash b', HasCallStack) | |
| ⇒ AnchoredFragment b' | Current chain |
| → AnchoredFragment b | Candidate chain |
| → ChainDiff b |
Application
apply ∷ HasHeader b ⇒ AnchoredFragment b → ChainDiff b → Maybe (AnchoredFragment b) Source #
Manipulation
map ∷ ∀ a b. (HasHeader b, HeaderHash a ~ HeaderHash b) ⇒ (a → b) → ChainDiff a → ChainDiff b Source #
append ∷ HasHeader b ⇒ ChainDiff b → b → ChainDiff b Source #
Append a b to a ChainDiff.
PRECONDITION: it must fit onto the end of the suffix.
mapM ∷ ∀ a b m. (HasHeader b, HeaderHash a ~ HeaderHash b, Monad m) ⇒ (a → m b) → ChainDiff a → m (ChainDiff b) Source #
takeWhileOldest ∷ HasHeader b ⇒ (b → Bool) → ChainDiff b → ChainDiff b Source #
Return the longest prefix of the suffix matching the given predicate, starting from the left, i.e., the "oldest" blocks.
If the new suffix is shorter than the diff's rollback, return Nothing.
truncate ∷ (HasHeader b, HasCallStack) ⇒ Point b → ChainDiff b → ChainDiff b Source #
Truncate the diff by rolling back the new suffix to the given point.
PRECONDITION: the given point must correspond to one of the new
blocks/headers of the new suffix or its anchor (i.e,
).withinFragmentBounds pt (getSuffix diff)
If the length of the truncated suffix is shorter than the rollback,
Nothing is returned.