package octez-protocol-018-Proxford-libs

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type ('oh, 'u, 'p) encoding = {
  1. encode : 'u -> 'p repr;
  2. decode : 'p repr -> 'u;
  3. input : 'oh -> 'p Input.input;
  4. of_input : 'p Input.input -> 'oh;
}

Encoding type for encapsulating encoding/decoding/input functions. This type enables us to use more structured types for data in circuits. For that, encoding is parameterized by 3 types:

  • 'oh is the type of the high-level OCaml representation
  • 'u is the unpacked type, i.e. a collection of atomic reprs.
  • `p is the packed type, i.e the inner type of Plompiler's repr.

For example, for the representation of a point (pair of scalars), one might have:

( {x:int; y:int},
  scalar repr * scalar repr,
  scalar * scalar
) encoding

The first type, the record {x:int; y:int}, represents an OCaml point, which becomes the argument taken by the input function.

The second type, scalar repr * scalar repr, is an unpacking of the encoding. This is used for the result of decode. We can use any type isomorphic to scalar repr * scalar repr here.

The last type must be scalar * scalar, as an encoding of a point will be of the type (scalar * scalar) repr.

The function conv defines conversions for encodings, by changing the higher-level 'u and and 'oh types.

val conv : ('u1 -> 'u0) -> ('u0 -> 'u1) -> ('o1 -> 'o0) -> ('o0 -> 'o1) -> ('o0, 'u0, 'p) encoding -> ('o1, 'u1, 'p) encoding
val with_implicit_bool_check : ('p repr -> bool repr t) -> ('o, 'u, 'p) encoding -> ('o, 'u, 'p) encoding
val with_assertion : ('p repr -> unit repr t) -> ('o, 'u, 'p) encoding -> ('o, 'u, 'p) encoding
val scalar_encoding : (Bls12_381.Fr.t, scalar repr, scalar) encoding
val bool_encoding : (bool, bool repr, bool) encoding
val list_encoding : ('a, 'b, 'c) encoding -> ('a list, 'b list, 'c list) encoding
val atomic_list_encoding : ('a, 'b repr, 'c) encoding -> ('a list, 'b list repr, 'c list) encoding
val obj2_encoding : ('a, 'b, 'c) encoding -> ('d, 'e, 'f) encoding -> ('a * 'd, 'b * 'e, 'c * 'f) encoding
val atomic_obj2_encoding : ('a, 'b repr, 'c) encoding -> ('d, 'e repr, 'f) encoding -> ('a * 'd, ('b * 'e) repr, 'c * 'f) encoding
val obj3_encoding : ('a, 'b, 'c) encoding -> ('d, 'e, 'f) encoding -> ('g, 'h, 'i) encoding -> ('a * ('d * 'g), 'b * ('e * 'h), 'c * ('f * 'i)) encoding
val atomic_obj3_encoding : ('a, 'b repr, 'c) encoding -> ('d, 'e repr, 'f) encoding -> ('g, 'h repr, 'i) encoding -> ('a * ('d * 'g), ('b * ('e * 'h)) repr, 'c * ('f * 'i)) encoding
val obj4_encoding : ('a, 'b, 'c) encoding -> ('d, 'e, 'f) encoding -> ('g, 'h, 'i) encoding -> ('j, 'k, 'l) encoding -> ('a * ('d * ('g * 'j)), 'b * ('e * ('h * 'k)), 'c * ('f * ('i * 'l))) encoding
val atomic_obj4_encoding : ('a, 'b repr, 'c) encoding -> ('d, 'e repr, 'f) encoding -> ('g, 'h repr, 'i) encoding -> ('j, 'k repr, 'l) encoding -> ('a * ('d * ('g * 'j)), ('b * ('e * ('h * 'k))) repr, 'c * ('f * ('i * 'l))) encoding
val obj5_encoding : ('a, 'b, 'c) encoding -> ('d, 'e, 'f) encoding -> ('g, 'h, 'i) encoding -> ('j, 'k, 'l) encoding -> ('m, 'n, 'o) encoding -> ('a * ('d * ('g * ('j * 'm))), 'b * ('e * ('h * ('k * 'n))), 'c * ('f * ('i * ('l * 'o)))) encoding
val atomic_obj5_encoding : ('a, 'b repr, 'c) encoding -> ('d, 'e repr, 'f) encoding -> ('g, 'h repr, 'i) encoding -> ('j, 'k repr, 'l) encoding -> ('m, 'n repr, 'o) encoding -> ('a * ('d * ('g * ('j * 'm))), ('b * ('e * ('h * ('k * 'n)))) repr, 'c * ('f * ('i * ('l * 'o)))) encoding
val obj6_encoding : ('a, 'b, 'c) encoding -> ('d, 'e, 'f) encoding -> ('g, 'h, 'i) encoding -> ('j, 'k, 'l) encoding -> ('m, 'n, 'o) encoding -> ('p, 'q, 'r) encoding -> ('a * ('d * ('g * ('j * ('m * 'p)))), 'b * ('e * ('h * ('k * ('n * 'q)))), 'c * ('f * ('i * ('l * ('o * 'r))))) encoding
val atomic_obj6_encoding : ('a, 'b repr, 'c) encoding -> ('d, 'e repr, 'f) encoding -> ('g, 'h repr, 'i) encoding -> ('j, 'k repr, 'l) encoding -> ('m, 'n repr, 'o) encoding -> ('p, 'q repr, 'r) encoding -> ('a * ('d * ('g * ('j * ('m * 'p)))), ('b * ('e * ('h * ('k * ('n * 'q))))) repr, 'c * ('f * ('i * ('l * ('o * 'r))))) encoding
val obj7_encoding : ('a, 'b, 'c) encoding -> ('d, 'e, 'f) encoding -> ('g, 'h, 'i) encoding -> ('j, 'k, 'l) encoding -> ('m, 'n, 'o) encoding -> ('p, 'q, 'r) encoding -> ('s, 't, 'u) encoding -> ('a * ('d * ('g * ('j * ('m * ('p * 's))))), 'b * ('e * ('h * ('k * ('n * ('q * 't))))), 'c * ('f * ('i * ('l * ('o * ('r * 'u)))))) encoding
val atomic_obj7_encoding : ('a, 'b repr, 'c) encoding -> ('d, 'e repr, 'f) encoding -> ('g, 'h repr, 'i) encoding -> ('j, 'k repr, 'l) encoding -> ('m, 'n repr, 'o) encoding -> ('p, 'q repr, 'r) encoding -> ('s, 't repr, 'u) encoding -> ('a * ('d * ('g * ('j * ('m * ('p * 's))))), ('b * ('e * ('h * ('k * ('n * ('q * 't)))))) repr, 'c * ('f * ('i * ('l * ('o * ('r * 'u)))))) encoding
val obj8_encoding : ('a, 'b, 'c) encoding -> ('d, 'e, 'f) encoding -> ('g, 'h, 'i) encoding -> ('j, 'k, 'l) encoding -> ('m, 'n, 'o) encoding -> ('p, 'q, 'r) encoding -> ('s, 't, 'u) encoding -> ('v, 'w, 'x) encoding -> ('a * ('d * ('g * ('j * ('m * ('p * ('s * 'v)))))), 'b * ('e * ('h * ('k * ('n * ('q * ('t * 'w)))))), 'c * ('f * ('i * ('l * ('o * ('r * ('u * 'x))))))) encoding
val atomic_obj8_encoding : ('a, 'b repr, 'c) encoding -> ('d, 'e repr, 'f) encoding -> ('g, 'h repr, 'i) encoding -> ('j, 'k repr, 'l) encoding -> ('m, 'n repr, 'o) encoding -> ('p, 'q repr, 'r) encoding -> ('s, 't repr, 'u) encoding -> ('v, 'w repr, 'x) encoding -> ('a * ('d * ('g * ('j * ('m * ('p * ('s * 'v)))))), ('b * ('e * ('h * ('k * ('n * ('q * ('t * 'w))))))) repr, 'c * ('f * ('i * ('l * ('o * ('r * ('u * 'x))))))) encoding
val obj9_encoding : ('a, 'b, 'c) encoding -> ('d, 'e, 'f) encoding -> ('g, 'h, 'i) encoding -> ('j, 'k, 'l) encoding -> ('m, 'n, 'o) encoding -> ('p, 'q, 'r) encoding -> ('s, 't, 'u) encoding -> ('v, 'w, 'x) encoding -> ('y, 'z, 'a1) encoding -> ('a * ('d * ('g * ('j * ('m * ('p * ('s * ('v * 'y))))))), 'b * ('e * ('h * ('k * ('n * ('q * ('t * ('w * 'z))))))), 'c * ('f * ('i * ('l * ('o * ('r * ('u * ('x * 'a1)))))))) encoding
val atomic_obj9_encoding : ('a, 'b repr, 'c) encoding -> ('d, 'e repr, 'f) encoding -> ('g, 'h repr, 'i) encoding -> ('j, 'k repr, 'l) encoding -> ('m, 'n repr, 'o) encoding -> ('p, 'q repr, 'r) encoding -> ('s, 't repr, 'u) encoding -> ('v, 'w repr, 'x) encoding -> ('y, 'z repr, 'a1) encoding -> ('a * ('d * ('g * ('j * ('m * ('p * ('s * ('v * 'y))))))), ('b * ('e * ('h * ('k * ('n * ('q * ('t * ('w * 'z)))))))) repr, 'c * ('f * ('i * ('l * ('o * ('r * ('u * ('x * 'a1)))))))) encoding
val obj10_encoding : ('a, 'b, 'c) encoding -> ('d, 'e, 'f) encoding -> ('g, 'h, 'i) encoding -> ('j, 'k, 'l) encoding -> ('m, 'n, 'o) encoding -> ('p, 'q, 'r) encoding -> ('s, 't, 'u) encoding -> ('v, 'w, 'x) encoding -> ('y, 'z, 'a1) encoding -> ('b1, 'c1, 'd1) encoding -> ('a * ('d * ('g * ('j * ('m * ('p * ('s * ('v * ('y * 'b1)))))))), 'b * ('e * ('h * ('k * ('n * ('q * ('t * ('w * ('z * 'c1)))))))), 'c * ('f * ('i * ('l * ('o * ('r * ('u * ('x * ('a1 * 'd1))))))))) encoding
val atomic_obj10_encoding : ('a, 'b repr, 'c) encoding -> ('d, 'e repr, 'f) encoding -> ('g, 'h repr, 'i) encoding -> ('j, 'k repr, 'l) encoding -> ('m, 'n repr, 'o) encoding -> ('p, 'q repr, 'r) encoding -> ('s, 't repr, 'u) encoding -> ('v, 'w repr, 'x) encoding -> ('y, 'z repr, 'a1) encoding -> ('b1, 'c1 repr, 'd1) encoding -> ('a * ('d * ('g * ('j * ('m * ('p * ('s * ('v * ('y * 'b1)))))))), ('b * ('e * ('h * ('k * ('n * ('q * ('t * ('w * ('z * 'c1))))))))) repr, 'c * ('f * ('i * ('l * ('o * ('r * ('u * ('x * ('a1 * 'd1))))))))) encoding
OCaml

Innovation. Community. Security.