Mavryk_raw_protocol_alpha.AmendmentAmendments and proposals.
Only delegates having the minimal required stake take part in the amendment procedure. It works as follows:
The current protocol parameters are documented in src/proto_alpha/lib_parameters/default_parameters.ml
In practice, the real constants used are defined in the migration code. In src/proto_alpha/lib_protocol/init_storage.ml, function prepare_first_block introduces new constants and redefines the existing ones.
val may_start_new_voting_period :
Alpha_context.context ->
Alpha_context.context Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.tIf at the end of a voting period, moves to the next one following the state machine of the amendment procedure.
val get_testnet_dictator :
Alpha_context.context ->
Mavryk_protocol_environment_alpha.Chain_id.t ->
Alpha_context.public_key_hash optionReturn the registered testchain dictator, if any. This function will always return None on mainnet.
val is_testnet_dictator :
Alpha_context.context ->
Mavryk_protocol_environment_alpha.Chain_id.t ->
Alpha_context.public_key_hash ->
boolCheck whether the given public key hash corresponds to the registered testchain dictator, if any. This function will always return false on mainnet.
There are two kinds of voting operations:
val apply_proposals :
Alpha_context.context ->
Mavryk_protocol_environment_alpha.Chain_id.t ->
Alpha_context.Kind.proposals Alpha_context.contents ->
(Alpha_context.context
* Alpha_context.Kind.proposals Apply_results.contents_result_list)
Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.tUpdate the context with the effects of a Proposals operation:
Note that a Proposals operation from a testnet dictator (which may be set up when a test chain is initialized) has completely different effects:
validate_proposals must have been called beforehand, and is responsible for ensuring that apply_proposals cannot fail.
val apply_ballot :
Alpha_context.context ->
Alpha_context.Kind.ballot Alpha_context.contents ->
(Alpha_context.context
* Alpha_context.Kind.ballot Apply_results.contents_result_list)
Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.tUpdate the context with the effects of a Ballot operation:
The couple (source of the operation, submitted ballot) is recorded.
validate_ballot must have been called beforehand, and is responsible for ensuring that apply_ballot cannot fail.