package octez-l2-libs
type level_proof = {
hash : Tezos_crypto.Hashed.Smart_rollup_merkelized_payload_hashes_hash.t;
level : int32;
}
type history_proof = (level_proof, Hash.t) Skip_list.cell
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.