Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- simpleBlockchainTime ∷ ∀ m. IOLike m ⇒ ResourceRegistry m → SystemTime m → SlotLength → NominalDiffTime → m (BlockchainTime m)
- getWallClockSlot ∷ IOLike m ⇒ SystemTime m → SlotLength → m (SlotNo, NominalDiffTime)
- waitUntilNextSlot ∷ IOLike m ⇒ SystemTime m → SlotLength → NominalDiffTime → SlotNo → m SlotNo
Documentation
∷ ∀ m. IOLike m | |
⇒ ResourceRegistry m | |
→ SystemTime m | |
→ SlotLength | |
→ NominalDiffTime | Max clock rewind |
→ m (BlockchainTime m) |
Real blockchain time
WARNING: if the start time is in the future, simpleBlockchainTime
will
block until the start time has come.
Low-level API (exported primarily for testing)
getWallClockSlot ∷ IOLike m ⇒ SystemTime m → SlotLength → m (SlotNo, NominalDiffTime) Source #
Get current slot and time spent in that slot
∷ IOLike m | |
⇒ SystemTime m | |
→ SlotLength | |
→ NominalDiffTime | Max clock rewind |
→ SlotNo | Current slot number |
→ m SlotNo |
Wait until the next slot
Takes the current slot number to guard against system clock changes. If the
clock changes back further than the max clock rewind parameter, a fatal
SystemClockMovedBack
exception will be thrown. When this exception is
thrown, the node will shut down, and should be restarted with (full?)
validation enabled: it is conceivable that blocks got moved to the immutable
DB that, due to the clock change, should not be considered immutable anymore.
If the clock changed back less than the max clock rewind parameter, we stay in the same slot for longer and don't throw an exception.