ouroboros-consensus-0.1.0.1: Consensus layer for the Ouroboros blockchain protocol
Safe Haskell None
Language Haskell2010

Ouroboros.Consensus.Fragment.InFuture

Description

Intended for qualified import

import Ouroboros.Consensus.Fragment.InFuture (CheckInFuture(..), ClockSkew(..))
import qualified Ouroboros.Consensus.Fragment.InFuture as InFuture
Synopsis

Documentation

data InFuture m blk Source #

Header of block that we found to be in the future

Constructors

InFuture

Fields

Clock skew

clockSkewInSeconds :: Double -> ClockSkew Source #

Specify maximum clock skew in seconds

defaultClockSkew :: ClockSkew Source #

Default maximum permissible clock skew

See ClockSkew for details. We allow for 5 seconds skew by default.

opaque

data ClockSkew Source #

Maximum permissible clock skew

When running NTP, systems clocks will never be perfectly synchronized. The maximum clock skew records how much of a difference we consider acceptable.

For example. Suppose

  • Two nodes A and B
  • A's clock is 0.5 ahead of B's
  • A produces a block and sends it to B
  • When B translates the SlotNo of that block to a time, it may find that it is 0.5 seconds ahead of its current clock (worst case).

The maximum permissible clock skew decides if B will consider this block to be valid (even if it will not yet consider it for chain seleciton) or as invalid (and disconnect from A, since A is sending it invalid blocks).

Use defaultClockSkew when unsure.

Testing

dontCheck :: Monad m => CheckInFuture m blk Source #

Trivial InFuture check that doesn't do any check at all

This is useful for testing and tools such as the DB converter.

miracle Source #

Arguments

:: forall m blk. ( MonadSTM m, HasHeader ( Header blk))
=> STM m SlotNo

Get current slot

-> Word64

Maximum clock skew (in terms of slots)

-> CheckInFuture m blk

If by some miracle we have a function that can always tell us what the correct slot is, implementing CheckInFuture is easy

NOTE: Use of miracle in tests means that none of the hard fork infrastructure for converting slots to time is tested.