Mavryk_baking_alpha.Baking_simulator
type incremental = {
predecessor : Baking_state.block_info;
context : Mavryk_protocol_environment.Context.t;
state : Mavryk_protocol_alpha.Protocol.validation_state
* Mavryk_protocol_alpha.Protocol.application_state option;
rev_operations : Mavryk_protocol_alpha.Protocol.Alpha_context.Operation.packed
list;
header : Mavryk_base.Block_header.shell_header;
}
val load_context :
context_path:string ->
Abstract_context_index.t Mavryk_base.TzPervasives.tzresult Lwt.t
val check_context_consistency :
Abstract_context_index.t ->
Mavryk_base.TzPervasives.Context_hash.t ->
unit Mavryk_base.TzPervasives.tzresult Lwt.t
Make sure that the given context is consistent by trying to read in it
val begin_construction :
timestamp:Mavryk_base.TzPervasives.Time.Protocol.t ->
protocol_data:Mavryk_protocol_alpha.Protocol.block_header_data ->
force_apply:bool ->
pred_resulting_context_hash:Mavryk_base.TzPervasives.Context_hash.t ->
Abstract_context_index.t ->
Baking_state.block_info ->
Mavryk_base.TzPervasives.Chain_id.t ->
incremental Mavryk_base.TzPervasives.tzresult Lwt.t
begin_construction ~timestamp ~protocol_data ~force_apply abstract_context
predecessor chain_id
creates a new incremental
value with an empty operation list. A context
is recovered from the abstract_index
and the resulting_context_hash from predecessor
. This context is used to create a validation_state
and an application_state
(if force_apply
is set). A partial shell_header
is created from predecessor
information and timestamp
.
val add_operation :
incremental ->
Mavryk_protocol_alpha.Protocol.Alpha_context.Operation.packed ->
(incremental * Mavryk_protocol_alpha.Protocol.operation_receipt option)
Mavryk_base.TzPervasives.tzresult
Lwt.t
add_operation incremental op
validates op
in incremental.validation_state
without checking its signature. Indeed, the operation has already been validated in the node so it has a correct signature. We still need to validate it again because the context may be different. op
is also applied if incremental
has been created with force_apply
set. This function returns an incremental
with updated operations list and validation_state
(and application_state
).
val finalize_construction :
incremental ->
(Mavryk_protocol_environment.validation_result
* Mavryk_protocol_alpha.Protocol.block_header_metadata)
option
Mavryk_base.TzPervasives.tzresult
Lwt.t
finalize_construction incremental
calls the finalize_validation
of the protocol on the validation_state
from incremental
. If incremental
has been created with force_apply
set, finalize_application
is also called and its results returned.