Module Tezos_baking_alpha.State_transitions

This module, and in particular the step function, modifies the automaton state, while Baking_actions performs potentially failing side-effects.

type proposal_acceptance =
  1. | Invalid
  2. | Outdated_proposal
  3. | Valid_proposal
val is_acceptable_proposal_for_current_level : Baking_state.state -> Baking_state.proposal -> proposal_acceptance Lwt.t
val may_update_proposal : is_proposal_applied:bool -> Baking_state.state -> Baking_state.proposal -> Baking_state.state Lwt.t
val handle_proposal : is_proposal_applied:bool -> Baking_state.state -> Baking_state.proposal -> (Baking_state.state * Baking_actions.action) Lwt.t

Propose a block at the start of the given round for the given delegate, given that there was already a proposal at the current level, the last one being last_proposal.

Increase the current round and propose at the new round (same level), if the baker has a proposer slot.

Propose for the first time at a level at the given round. There was no previous proposal at the current level.