package tezos-protocol-015-PtLimaPt

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

Slot header representation for the data-availability layer.

Overview

For the data-availability layer, the L1 provides a list of slots at every level. A slot is a blob of data that can be interpreted by the users of the data-availability layer (such as SCORU).

The purpose of the data-availability layer is to increase the bandwidth of the layer 1 thanks to the distribution of "slots". A slot is never posted directly onto the layer 1 blocks but on the data-availability layer. The producer of a slot sill has to post a slot header onto the layer 1. A slot header is an abstract datatype certifying that the corresponding slot has some maximum size (provided by the layer 1). In other words, the whole data contained into the slot cannot exceed some fixed size. This is to avoid attacks where a slot header would be posted onto the layer 1 block, declared available by the protocol, but actually the slot size would be too large to be refuted a posteriori.

The slot header can also be used to prove that a blob of data is a portion of the initial slot.

module Header : sig ... end
module Index : sig ... end

An `Index.t` is a possible value for a slot index. We assume this value to be a positive 8-bit integer. Note that this is a hard constraint, which is independent of protocol constants. If a choice is ever made to increase the size of available slots in the protocol, we also need to change this module to accommodate for higher values.

type id = {
  1. published_level : Raw_level_repr.t;
  2. index : Index.t;
}

For Layer-1, a slot is described by the level at which it is published, the slot's index (in the list of slots), and the slot's header (KATE commitment hash).

type t = {
  1. id : id;
  2. header : Header.t;
}
type slot = t
val equal : t -> t -> bool
type slot_index = Index.t
module Page : sig ... end

A DAL slot is decomposed to a successive list of pages with fixed content size. The size is chosen so that it's possible to inject a page in a Tezos L1 operation if needed during the proof phase of a refutation game.

The encoding ensures the slot is always a non-negative number.

module Slot_market : sig ... end

Only one slot header is accepted per slot index. If two slots headers are included into a block, the second one will fail.

module Slots_history : sig ... end

This module provides an abstract data structure (type t) that represents a skip list used to store successive DAL slots confirmed on L1. There is one slot per cell in the skip list. The slots are sorted in increasing order by level, and by slot index, for the slots of the same level.

OCaml

Innovation. Community. Security.