package tezos-protocol-alpha

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

This module exposes a type t that represents inbox messages. Inbox messages are produced by the Layer 1 protocol and are encoded using the serialize function, before being added to a smart-contract rollup's inbox.

They are part of the Rollup Management Protocol that defines the communication protocol for exchanging messages between Layer 1 and Layer 2 for a smart-contract rollup.

There are two types of inbox messages: external and internal.

Internal messages originate from Layer 1 smart-contract and consist of:

  • payload the parameters passed to the smart-contract rollup.
  • sender the Layer 1 contract caller.
  • source the public key hash used for originating the transaction.

External messages originate from the Sc_rollup_add_messages manager-operation and consists of strings. The Layer 2 node is responsible for decoding and interpreting these messages.

type internal_inbox_message =
  1. | Transfer of {
    1. payload : Script_repr.expr;
      (*

      A Micheline value containing the parameters passed to the rollup.

      *)
    2. sender : Contract_hash.t;
      (*

      The contract hash of an Layer 1 originated contract sending a message to the rollup.

      *)
    3. source : Tezos_protocol_environment_alpha.Signature.public_key_hash;
      (*

      The implicit account that originated the transaction.

      *)
    4. destination : Sc_rollup_repr.Address.t;
      (*

      The destination, as a rollup address, for the message.

      *)
    }
  2. | Start_of_level
    (*

    Internal message put at the beginning of each inbox's level.

    *)
  3. | End_of_level
    (*

    Internal message put at the end of each inbox's level.

    *)
  4. | Info_per_level of {
    1. predecessor_timestamp : Tezos_protocol_environment_alpha.Time.t;
      (*

      Timestamp of the predecessor block where this message is pushed.

      *)
    2. predecessor : Tezos_protocol_environment_alpha.Block_hash.t;
      (*

      Predecessor of the block this message is pushed.

      *)
    }
  5. | Protocol_migration of string

internal_inbox_message represent an internal message in a inbox (L1 -> L2). This is not inline so it can easily be used by Sc_rollup_costs.cost_serialize_internal_inbox_message.

type t =
  1. | Internal of internal_inbox_message
  2. | External of string

A type representing messages from Layer 1 to Layer 2. Internal ones are originated from Layer 1 smart-contracts and external ones are messages from an external manager operation.

type serialized = private string

Encoding for messages from Layer 1 to Layer 2

serialize msg encodes the inbox message msg in binary format.

deserialize bs decodes bs as an inbox_message t.

val unsafe_of_string : string -> serialized
val unsafe_to_string : serialized -> string
val hash_serialized_message : serialized -> Hash.t

hash_serialized_message payload is the hash of payload. It is used by Sc_rollup_inbox_merkelized_payload_hashes_repr.t.

val start_of_level_serialized : serialized

serialized representation of Internal [Start_of_level].

val end_of_level_serialized : serialized

serialized representation of Internal [End_of_level].

val info_per_level_serialized : predecessor_timestamp:Tezos_protocol_environment_alpha.Time.t -> predecessor:Tezos_protocol_environment_alpha.Block_hash.t -> serialized

info_per_level_serialized~predecessor_timestamp~predecessor is the serialized representation of the internal message for Info_per_level.

OCaml

Innovation. Community. Security.