Legend:
Library
Module
Module type
Parameter
Class
Class type
A round represents an iteration of the single-shot consensus algorithm.
Rounds can be seen as an infinite, 0-indexed, list of durations. The durations are generated by an arithmetic progression depending on Constants_repr.minimal_block_delay (its initial value, a.k.a the one for round 0) and Constants_repr.delay_increment_per_round (its common difference) .
Round identifiers are non-negative 32 bit integers. This interface ensures that no negative round can be created.
if applied to the upper bound of the round integer representation.
val pred :
t->(t,
Tezos_protocol_environment_alpha__Environment.Error_monad.errorTezos_protocol_environment_alpha__Environment.Error_monad.trace)Stdlib.result
Predecessor of the given round. Returns an error if applied to zero, as negative round are prohibited.
val of_int32 :
int32 ->(t,
Tezos_protocol_environment_alpha__Environment.Error_monad.errorTezos_protocol_environment_alpha__Environment.Error_monad.trace)Stdlib.result
Building a round from an int32. Returns an error if applied to a negative number.
val of_int :
int ->(t,
Tezos_protocol_environment_alpha__Environment.Error_monad.errorTezos_protocol_environment_alpha__Environment.Error_monad.trace)Stdlib.result
Building a round from an int. Returns an error if applied to a negative number or a number greater than Int32.max_int.
val to_int :
t->(int,
Tezos_protocol_environment_alpha__Environment.Error_monad.errorTezos_protocol_environment_alpha__Environment.Error_monad.trace)Stdlib.result
Building an int from a round. Returns an error if the value does not fit in max_int. (current 32bit encodings always fit in int on 64bit architecture though).
val to_slot :
t->committee_size:int ->(Slot_repr.t,
Tezos_protocol_environment_alpha__Environment.Error_monad.errorTezos_protocol_environment_alpha__Environment.Error_monad.trace)Stdlib.result
Returns the slot corresponding to the given round r, that is r
mod committee_size.
val level_offset_of_round :
Durations.t->round:t->(Period_repr.t,
Tezos_protocol_environment_alpha__Environment.Error_monad.errorTezos_protocol_environment_alpha__Environment.Error_monad.trace)Stdlib.result
level_offset_of_round round_durations ~round:r represents the offset of the starting time of round r with respect to the start of the level. round = 0 1 2 3 r
val timestamp_of_round :
Durations.t->predecessor_timestamp:Time_repr.t->predecessor_round:t->round:t->(Time_repr.t,
Tezos_protocol_environment_alpha__Environment.Error_monad.errorTezos_protocol_environment_alpha__Environment.Error_monad.trace)Stdlib.result
timestamp_of_round round_durations ~predecessor_timestamp:pred_ts
~predecessor_round:pred_round ~round returns the starting time of round round given that the timestamp and the round of the block at the previous level is pred_ts and pred_round, respectively.
Precisely, the resulting timestamp is: pred_ts + round_duration(pred_round) + level_offset_of_round(round).
val timestamp_of_another_round_same_level :
Durations.t->current_timestamp:Time_repr.t->current_round:t->considered_round:t->(Time_repr.t,
Tezos_protocol_environment_alpha__Environment.Error_monad.errorTezos_protocol_environment_alpha__Environment.Error_monad.trace)Stdlib.result
timestamp_of_another_round_same_level
round_durations
~current_timestamp
~current_round
~considered_round returns the starting time of round considered_round.
start of current level current ts result | | | | | | |-----|----...--|-- ... ------|- | | | | cur_round = 0 1 current considered round round
It also works when considered_round is lower than current_round.
Precisely, the resulting timestamp is: current_timestamp - level_offset_of_round(current_round)
+ level_offset_of_round(considered_round).
val round_of_timestamp :
Durations.t->predecessor_timestamp:Time_repr.t->predecessor_round:t->timestamp:Time_repr.t->(t,
Tezos_protocol_environment_alpha__Environment.Error_monad.errorTezos_protocol_environment_alpha__Environment.Error_monad.trace)Stdlib.result
round_of_timestamp round_durations ~predecessor_timestamp ~predecessor_round
~timestamp:ts returns the round to which the timestamp ts belongs to, given that the timestamp and the round of the block at the previous level is pred_ts and pred_round, respectively.
Precisely, the resulting round is: round_and_offset round_durations ~level_offset:diff where diff = ts - (predecessor_timestamp + round_duration(predecessor_round).
Returns an error when the timestamp is before the level start.