package tezos-protocol-alpha
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 : Tezos_protocol_environment_alpha.Format.formatter -> t -> unit
val encoding : t Tezos_protocol_environment_alpha.Data_encoding.t
val inbox_level : t -> Raw_level_repr.t
inbox_level inbox
returns the maximum level of message insertion in inbox
or its initial level.
module History :
Bounded_history_repr.S with type key = Hash.t and type value = history_proof
A History.t
is basically a lookup table of history_proof
s. We need this if we want to produce inbox proofs because it allows us to dereference the 'pointer' hashes in any of the history_proof
s. This deref
function is passed to Skip_list.back_path
or Skip_list.search
to allow these functions to construct valid paths back through the skip list.
val pp_history_proof :
Tezos_protocol_environment_alpha.Format.formatter ->
history_proof ->
unit
val history_proof_encoding :
history_proof Tezos_protocol_environment_alpha.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 ->
Sc_rollup_inbox_merkelized_payload_hashes_repr.Hash.t
current_witness inbox
returns the current witness of the inbox, i.e. the merkelized payload hash.