package octez-protocol-019-PtParisB-libs
type incremental = {
predecessor : Baking_state.block_info;
context : Tezos_protocol_environment.Context.t;
state : Tezos_protocol_019_PtParisB.Protocol.validation_state * Tezos_protocol_019_PtParisB.Protocol.application_state option;
rev_operations : Tezos_protocol_019_PtParisB.Protocol.Alpha_context.Operation.packed list;
header : Tezos_base.Block_header.shell_header;
}
val load_context :
context_path:string ->
Abstract_context_index.t Tezos_base.TzPervasives.tzresult Lwt.t
val check_context_consistency :
Abstract_context_index.t ->
Tezos_base.TzPervasives.Context_hash.t ->
unit Tezos_base.TzPervasives.tzresult Lwt.t
Make sure that the given context is consistent by trying to read in it
val begin_construction :
timestamp:Tezos_base.TzPervasives.Time.Protocol.t ->
protocol_data:Tezos_protocol_019_PtParisB.Protocol.block_header_data ->
force_apply:bool ->
pred_resulting_context_hash:Tezos_base.TzPervasives.Context_hash.t ->
Abstract_context_index.t ->
Baking_state.block_info ->
Tezos_base.TzPervasives.Chain_id.t ->
incremental Tezos_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 ->
Tezos_protocol_019_PtParisB.Protocol.Alpha_context.Operation.packed ->
(incremental * Tezos_protocol_019_PtParisB.Protocol.operation_receipt option)
Tezos_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 ->
(Tezos_protocol_environment.validation_result
* Tezos_protocol_019_PtParisB.Protocol.block_header_metadata)
option
Tezos_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.