package octez-l2-libs
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 Skip_list : Tezos_base.Skip_list.S
module V1 : sig ... end
include Versioned_data.S with type t = V1.t
The type of versioned values, including the one that is currently used and the previous ones.
val versioned_encoding : versioned Tezos_base.TzPervasives.Data_encoding.t
Encoding for versioned values, corresponds to the one defined by the protocol.
Conversion to the currently used representation. In practice this function must provide ways to translate values of older versions to the latest 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 level_proof = V1.level_proof = {
hash : Tezos_crypto.Hashed.Smart_rollup_merkelized_payload_hashes_hash.t;
level : int32;
}
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_proof
s 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.
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 encoding : t Tezos_base.TzPervasives.Data_encoding.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 history_proof_encoding :
history_proof Tezos_base.TzPervasives.Data_encoding.t
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).
val current_witness :
t ->
Tezos_crypto.Hashed.Smart_rollup_merkelized_payload_hashes_hash.t
current_witness inbox
returns the current witness of the inbox, i.e. the merkelized payload hash.