package tezos-protocol-014-PtKathma

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

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).
type input = {
  1. inbox_level : Raw_level_repr.t;
  2. message_counter : Tezos_protocol_environment_014_PtKathma.Z.t;
  3. payload : string;
}

An input to a PVM is the message_counter element of an inbox at a given inbox_level and contains a given payload.

val input_equal : input -> input -> bool
type input_request =
  1. | No_input_required
  2. | Initial
  3. | First_after of Raw_level_repr.t * Tezos_protocol_environment_014_PtKathma.Z.t

The PVM's current input expectations. No_input_required is if the machine is busy and has no need for new input. Initial will be if the machine has never received an input so expects the very first item in the inbox. First_after (level, counter) will expect whatever comes next after that position in the inbox.

val input_request_equal : input_request -> input_request -> bool
type output = {
  1. outbox_level : Raw_level_repr.t;
  2. message_index : Tezos_protocol_environment_014_PtKathma.Z.t;
  3. message : Sc_rollup_outbox_message_repr.t;
}
module type S = sig ... end
OCaml

Innovation. Community. Security.