package tezos-protocol-alpha
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha256=43723d096307603703a1a89ed1b2eb202b365f5e7824b96b0cbf813b343a6cf7
sha512=b2a637f2e965000d3d49ad85277ca24d6cb07a1a7cf2bc69d296d8b03ad78c3eaa8e21e94b9162e62c2e11649cd03bc845b2a3dafe623b91065df69d47dc8e4f
doc/tezos-protocol-alpha.raw/Tezos_raw_protocol_alpha/Sc_rollup_PVM_sig/index.html
Module Tezos_raw_protocol_alpha.Sc_rollup_PVM_sigSource
This module introduces the semantics of Proof-generating Virtual Machines.
A PVM defines an operational semantics for some computational model. The specificity of PVMs, in comparison with standard virtual machines, is their ability to generate and to validate a *compact* proof that a given atomic execution step turned a given state into another one.
In the smart-contract rollups, PVMs are used for two purposes:
- They allow for the externalization of rollup execution by completely specifying the operational semantics of a given rollup. This standardization of the semantics gives a unique and executable source of truth about the interpretation of smart-contract rollup inboxes, seen as a transformation of a rollup state.
- They allow for the validation or refutation of a claim that the processing of some messages led to a given new rollup state (given an actual source of truth about the nature of these messages).
An input to a PVM is the message_counter element of an inbox at a given inbox_level and contains a given payload.
According the rollup management protocol, the payload must be obtained through Sc_rollup_inbox_message_repr.serialize which follows a documented format.
type inbox_message = {inbox_level : Raw_level_repr.t;message_counter : Tezos_protocol_environment_alpha.Z.t;payload : Sc_rollup_inbox_message_repr.serialized;
}type reveal_data = | Raw_data of string| Metadata of Sc_rollup_metadata_repr.t| Dal_page of Dal_slot_repr.Page.content option
val pp_inbox_message :
Tezos_protocol_environment_alpha.Format.formatter ->
inbox_message ->
unitval inbox_message_encoding :
inbox_message Tezos_protocol_environment_alpha.Data_encoding.encodinginbox_message_encoding encoding value for inbox_message.
val reveal_data_encoding :
reveal_data Tezos_protocol_environment_alpha.Data_encoding.encodinginput_equal i1 i2 return whether i1 and i2 are equal.
type reveal = | Reveal_raw_data of Sc_rollup_reveal_hash.t| Reveal_metadata| Request_dal_page of Dal_slot_repr.Page.t
type input_request = | No_input_required| Initial| First_after of Raw_level_repr.t * Tezos_protocol_environment_alpha.Z.t| Needs_reveal of reveal
The PVM's current input expectations:
No_input_requiredif the machine is busy and has no need for new input.
Initialif the machine has never received an input so expects the very first item in the inbox.
First_after (level, counter)expects whatever comes next after that position in the inbox.
Needs_metadataif the machine needs the metadata to continue its execution.
val input_request_encoding :
input_request Tezos_protocol_environment_alpha.Data_encoding.encodinginput_request_encoding encoding value for input_request.
val pp_input_request :
Tezos_protocol_environment_alpha.Format.formatter ->
input_request ->
unitpp_input_request fmt i pretty prints the given input i to the formatter fmt.
input_request_equal i1 i2 return whether i1 and i2 are equal.
type output = {outbox_level : Raw_level_repr.t;(*The outbox level containing the message. The level corresponds to the inbox level for which the message was produced.
*)message_index : Tezos_protocol_environment_alpha.Z.t;(*The message index.
*)message : Sc_rollup_outbox_message_repr.t;(*The message itself.
*)
}Type that describes output values.
output_encoding encoding value for output.
pp_output fmt o pretty prints the given output o to the formatter fmt.