Module Mavryk_base.Time

Time management

This module supports three distinct notions of time. The first notion of time is the time as handled by the protocol. This is the time that appears in the header of blocks, the time that baking slots are specified on, etc. It only has second-level precision.

The second notion of time is the time as handled by the system. This is the time as returned by the processor clock, the time that network timeouts are specified on, etc. It has sub-second precision.

As based on the system clock, this second notion of time is affected by system clock adjustments. If you need monotonous time, you can use the third notion introduced here.

The distinction between the notions of time is important for multiple reasons:

Note that while Protocol time has the int64 range, many of its functions do not work outside of the RFC3339 range, namely:

module Protocol : sig ... end
module System : sig ... end
module Monotonic : sig ... end