Mavryk_raw_protocol_001_PtAtLas.Seed_storageThis modules handles the storage of random nonce seeds.
This module is responsible for maintaining the table Storage.Seed.For_cycle.
type seed_computation_status = | Nonce_revelation_stage| Vdf_revelation_stage of {seed_discriminant : Seed_repr.seed;seed_challenge : Seed_repr.seed;}| Computation_finishedtype Mavryk_protocol_environment_001_PtAtLas.Error_monad.error += | Unknown of {oldest : Cycle_repr.t;cycle : Cycle_repr.t;latest : Cycle_repr.t;}| Already_accepted| Unverified_vdf| Too_early_revelationval init :
?initial_seed:State_hash.t ->
Raw_context.t ->
Raw_context.t Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.Lwt.tGenerates the first preserved_cycles+2 seeds for which there are no nonces.
val check_vdf :
Raw_context.t ->
Seed_repr.vdf_solution ->
unit Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.Lwt.tVerifies if a VDF (result, proof) is valid.
val update_seed :
Raw_context.t ->
Seed_repr.vdf_solution ->
Raw_context.t Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.Lwt.tUpdates the seed with a function of the VDF result.
val raw_for_cycle :
Raw_context.t ->
Cycle_repr.t ->
Seed_repr.seed Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.Lwt.tReturns the seed associated with the given cycle. Returns a generic storage error when the seed is not available.
val for_cycle :
Raw_context.t ->
Cycle_repr.t ->
Seed_repr.seed Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.Lwt.tReturns the seed associated with the given cycle. Returns the Unknown error when the seed is not available.
val compute_randao :
Raw_context.t ->
Raw_context.t Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.Lwt.tComputes RANDAO output for cycle #(current_cycle + preserved + 1)
val cycle_end :
Raw_context.t ->
Cycle_repr.t ->
(Raw_context.t * Nonce_storage.unrevealed list)
Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.Lwt.tMust be run at the end of the cycle, resets the VDF state and returns unrevealed nonces to know which party has to forfeit its attesting rewards for that cycle.
val get_seed_computation_status :
Raw_context.t ->
seed_computation_status
Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.Lwt.tReturn the random seed computation status, that is whether the VDF computation period has started, and if so the information needed, or if it has finished for the current cycle.
val remove_for_cycle :
Raw_context.t ->
Cycle_repr.t ->
Raw_context.t Mavryk_protocol_environment_001_PtAtLas.Error_monad.tzresult
Mavryk_protocol_environment_001_PtAtLas.Lwt.tRemoves the seed associated with the given cycle from the storage. It assumes the seed exists. If it does not it returns a generic storage error.