Module Make.Dal

type t

A precomputed set of constants

type parameters = Mavryk_crypto_dal.Cryptobox.Verifier.parameters = {
  1. redundancy_factor : int;
  2. page_size : int;
  3. slot_size : int;
  4. number_of_shards : int;
}

Parameters to build a value of type t

val make : parameters -> (t, [> `Fail of string ]) Pervasives.result

make precomputes the set of values needed by cryptographic primitives defined in this module and store them in a value of type t

Commitment to a polynomial.

module Commitment : sig ... end
type commitment_proof

A proof that the polynomial associated to some commitment is bounded by a constant.

val commitment_proof_encoding : commitment_proof Data_encoding.t

An encoding for the proof of a commitment.

val verify_commitment : t -> commitment -> commitment_proof -> bool

verify_commitment srs commitment proof checks whether commitment is a valid commitment. In particular, it check that the size of the data committed via commitment do not exceed C.slot_size. The verification time is constant.

type page = {
  1. index : int;
  2. content : bytes;
}

The original slot can be split into a list of pages of size page_size. A page is consequently encoded as a pair of an index and the content of this page.

type page_proof

A proof that the evaluation of points of a polynomial is part of a commitment.

val page_proof_encoding : page_proof Data_encoding.t

An encoding for the proof of a page.

val verify_page : t -> commitment -> page -> page_proof -> (bool, [> `Degree_exceeds_srs_length of string | `Segment_index_out_of_range ]) Result.t

verify_page t commitment page page_proof returns Ok true if the proof certifies that the slot_page is indeed included in the slot committed with commitment commitment. Returns Ok false otherwise.

Fails if the index of the page is out of range.