package tezos-protocol-alpha

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

Smart contract rollup.

Storage from this submodule must only be accessed through the module `Sc_rollup_storage`.

Each smart contract rollup is associated to:

  • a PVM kind (provided at creation time, read-only)
  • a boot sector (provided at creation time, read-only)
  • a parameters type specifying the types of parameters the rollup accepts
  • the L1 block level at which the rollup was created
  • a merkelized inbox, of which only the root hash is stored
  • a tree of commitments, rooted at the last cemented commitment
  • a map from stakers to commitments
  • a map from commitments to the time (level) of their first insertion

For performance reasons we also store (per rollup):

  • the total number of active stakers;
  • the number of stakers per commitment.

See module Sc_rollup_repr.Commitment for details.

type context = Raw_context.t
type key = Sc_rollup_repr.t

An abstract type for keys

type value = Sc_rollups.Kind.t

The type of values

Tells if a given key is already bound to a storage bucket. Consumes Gas_repr.read_bytes_cost Z.zero.

Retrieve a value from the storage bucket at a given key ; returns Storage_errorMissing_key if the key is not set ; returns Storage_errorCorrupted_data if the deserialisation fails. Consumes Gas_repr.read_bytes_cost <size of the value>.

Retrieve a value from the storage bucket at a given key ; returns None if the value is not set ; returns Storage_error Corrupted_data if the deserialisation fails. Consumes Gas_repr.read_bytes_cost <size of the value> if present or Gas_repr.read_bytes_cost Z.zero.

Updates the content of a bucket ; returns A Storage_Error Missing_key if the value does not exists. Consumes serialization cost. Consumes Gas_repr.write_bytes_cost <size of the new value>. Returns the difference from the old to the new size.

Allocates a storage bucket at the given key and initializes it ; returns a Storage_errorExisting_key if the bucket exists. Consumes serialization cost. Consumes Gas_repr.write_bytes_cost <size of the value>. Returns the size.

Allocates a storage bucket at the given key and initializes it with a value ; just updates it if the bucket exists. Consumes serialization cost. Consumes Gas_repr.write_bytes_cost <size of the new value>. Returns the difference from the old (maybe 0) to the new size, and a boolean indicating if a value was already associated to this key.

When the value is Some v, allocates the data and initializes it with v ; just updates it if the bucket exists. When the value is None, delete the storage bucket when the value ; does nothing if the bucket does not exists. Consumes serialization cost. Consumes the same gas cost as either remove or init_set. Returns the difference from the old (maybe 0) to the new size, and a boolean indicating if a value was already associated to this key.

Delete a storage bucket and its contents ; returns a Storage_errorMissing_key if the bucket does not exists. Consumes Gas_repr.write_bytes_cost Z.zero. Returns the freed size.

Removes a storage bucket and its contents ; does nothing if the bucket does not exists. Consumes Gas_repr.write_bytes_cost Z.zero. Returns the freed size, and a boolean indicating if a value was already associated to this key.

val keys_unaccounted : context -> key list Tezos_protocol_environment_alpha.Lwt.t

Returns the list of all storage bucket keys. Not carbonated (i.e. gas is not consumed); use with care.