package octez-l2-libs

  1. Overview
  2. Docs

Smart rollup shared inbox representation, adapted from a subset of src/proto_alpha/lib_protocol/sc_rollup_inbox_repr.mli.

module Hash = Inbox_hash
module V1 : sig ... end
include Versioned_data.S with type t = V1.t
type versioned

The type of versioned values, including the one that is currently used and the previous ones.

Encoding for versioned values, corresponds to the one defined by the protocol.

val of_versioned : versioned -> V1.t

Conversion to the currently used representation. In practice this function must provide ways to translate values of older versions to the latest one.

val to_versioned : V1.t -> versioned

Wrapping a current value as a versioned one.

include module type of V1 with type level_proof = V1.level_proof and type history_proof = V1.history_proof and type t = V1.t
type history_proof = V1.history_proof

A history_proof is a Skip_list.cell that stores multiple hashes. Skip_list.content history_proof gives the hash of this cell, while Skip_list.back_pointers history_proof is an array of hashes of earlier history_proofs in the inbox.

On the one hand, we think of this type as representing the whole Merkle structure of an inbox at a given level---it is the part of t above that can actually be used to prove things (it cannot be forged by a malicious node because it much match the hash stored by the L1).

On the other hand, we think of this type as representing a single proof-step back through the history of the inbox; given a hash that appears at some point later in the inbox this type proves that that hash points to this particular combination of a witness and further back-pointers.

In terms of size, this type is a small set of hashes; one for the current witness and `O(log2(ix))` in the back-pointers, where ix is the index of the cell in the skip list. That is, ix is the number of non-empty levels between now and the origination level of the rollup.

type t = V1.t = {
  1. level : int32;
  2. old_levels_messages : history_proof;
}

The type of the inbox for a smart-contract rollup as stored by the protocol in the context. Values that inhabit this type only act as fingerprint for inboxes and contain:

  • level : the inbox level ;
  • old_levels_messages : a witness of the inbox history.
val pp : Format.formatter -> t -> unit
val equal : t -> t -> bool
val hash : t -> Hash.t
val inbox_level : t -> int32

inbox_level inbox returns the maximum level of message insertion in inbox or its initial level.

val pp_history_proof : Format.formatter -> history_proof -> unit
val equal_history_proof : history_proof -> history_proof -> bool
val old_levels_messages : t -> history_proof

old_levels_messages inbox returns the latest skip list cell of the inbox history that is not up to change (i.e. not the current witness).

current_witness inbox returns the current witness of the inbox, i.e. the merkelized payload hash.

OCaml

Innovation. Community. Security.