package tezos-protocol-alpha

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type
type ('ta, 'tb) eq =
  1. | Eq : ('same, 'same) eq
type ex_comparable_ty =
  1. | Ex_comparable_ty : 'a Script_typed_ir.comparable_ty -> ex_comparable_ty
type ex_ty =
  1. | Ex_ty : 'a Script_typed_ir.ty -> ex_ty
type ex_stack_ty =
  1. | Ex_stack_ty : ('a, 's) Script_typed_ir.stack_ty -> ex_stack_ty
type ex_script =
  1. | Ex_script : ('a, 'b) Script_typed_ir.script -> ex_script
type ('arg, 'storage) code = {
  1. code : (('arg, 'storage) Script_typed_ir.pair, (Script_typed_ir.operation Script_typed_ir.boxed_list, 'storage) Script_typed_ir.pair) Script_typed_ir.lambda;
  2. arg_type : 'arg Script_typed_ir.ty;
  3. storage_type : 'storage Script_typed_ir.ty;
  4. root_name : Script_typed_ir.field_annot option;
}
type ex_code =
  1. | Ex_code : ('a, 'c) code -> ex_code
type ('a, 's, 'b, 'u) cinstr = {
  1. apply : 'r 'f. ('a, 's) Script_typed_ir.kinfo -> ('b, 'u, 'r, 'f) Script_typed_ir.kinstr -> ('a, 's, 'r, 'f) Script_typed_ir.kinstr;
}
type ('a, 's, 'b, 'u) descr = {
  1. loc : Alpha_context.Script.location;
  2. bef : ('a, 's) Script_typed_ir.stack_ty;
  3. aft : ('b, 'u) Script_typed_ir.stack_ty;
  4. instr : ('a, 's, 'b, 'u) cinstr;
}
type tc_context =
  1. | Lambda : tc_context
  2. | Dip : ('a, 's) Script_typed_ir.stack_ty * tc_context -> tc_context
  3. | Toplevel : {
    1. storage_type : 'sto Script_typed_ir.ty;
    2. param_type : 'param Script_typed_ir.ty;
    3. root_name : Script_typed_ir.field_annot option;
    4. legacy_create_contract_literal : bool;
    } -> tc_context
type ('a, 's) judgement =
  1. | Typed : ('a, 's, 'b, 'u) descr -> ('a, 's) judgement
  2. | Failed : {
    1. descr : 'b 'u. ('b, 'u) Script_typed_ir.stack_ty -> ('a, 's, 'b, 'u) descr;
    } -> ('a, 's) judgement
type unparsing_mode =
  1. | Optimized
  2. | Readable
  3. | Optimized_legacy
val list_empty : 'a Script_typed_ir.boxed_list
val set_fold : ('elt -> 'acc -> 'acc) -> 'elt Script_typed_ir.set -> 'acc -> 'acc
val set_update : 'a -> bool -> 'a Script_typed_ir.set -> 'a Script_typed_ir.set
val set_mem : 'elt -> 'elt Script_typed_ir.set -> bool
val empty_map : 'a Script_typed_ir.comparable_ty -> ('a, 'b) Script_typed_ir.map
val map_fold : ('key -> 'value -> 'acc -> 'acc) -> ('key, 'value) Script_typed_ir.map -> 'acc -> 'acc
val map_update : 'a -> 'b option -> ('a, 'b) Script_typed_ir.map -> ('a, 'b) Script_typed_ir.map
val map_mem : 'key -> ('key, 'value) Script_typed_ir.map -> bool
val map_get : 'key -> ('key, 'value) Script_typed_ir.map -> 'value option
val map_key_ty : ('a, 'b) Script_typed_ir.map -> 'a Script_typed_ir.comparable_ty
val big_map_mem : Alpha_context.context -> 'key -> ('key, 'value) Script_typed_ir.big_map -> (bool * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val big_map_get : Alpha_context.context -> 'key -> ('key, 'value) Script_typed_ir.big_map -> ('value option * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val big_map_update : Alpha_context.context -> 'key -> 'value option -> ('key, 'value) Script_typed_ir.big_map -> (('key, 'value) Script_typed_ir.big_map * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val big_map_get_and_update : Alpha_context.context -> 'key -> 'value option -> ('key, 'value) Script_typed_ir.big_map -> (('value option * ('key, 'value) Script_typed_ir.big_map) * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val ty_eq : Alpha_context.context -> Alpha_context.Script.location -> 'ta Script_typed_ir.ty -> 'tb Script_typed_ir.ty -> (('ta Script_typed_ir.ty, 'tb Script_typed_ir.ty) eq * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result
val compare_address : Script_typed_ir.address -> Script_typed_ir.address -> int
val compare_comparable : 'a Script_typed_ir.comparable_ty -> 'a -> 'a -> int
val parse_comparable_data : ?type_logger:type_logger -> Alpha_context.context -> 'a Script_typed_ir.comparable_ty -> Alpha_context.Script.node -> ('a * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val parse_data : ?type_logger:type_logger -> Alpha_context.context -> legacy:bool -> allow_forged:bool -> 'a Script_typed_ir.ty -> Alpha_context.Script.node -> ('a * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val unparse_data : Alpha_context.context -> unparsing_mode -> 'a Script_typed_ir.ty -> 'a -> (Alpha_context.Script.node * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val unparse_code : Alpha_context.context -> unparsing_mode -> Alpha_context.Script.node -> (Alpha_context.Script.node * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val parse_instr : ?type_logger:type_logger -> tc_context -> Alpha_context.context -> legacy:bool -> Alpha_context.Script.node -> ('a, 's) Script_typed_ir.stack_ty -> (('a, 's) judgement * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val parse_big_map_value_ty : Alpha_context.context -> legacy:bool -> Alpha_context.Script.node -> (ex_ty * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result

parse_ty specialized for the right-hand side part of a big map type, i.e. the `value` in `big_map key value`.

val parse_packable_ty : Alpha_context.context -> legacy:bool -> Alpha_context.Script.node -> (ex_ty * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result
val parse_parameter_ty : Alpha_context.context -> legacy:bool -> Alpha_context.Script.node -> (ex_ty * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result
val parse_comparable_ty : Alpha_context.context -> Alpha_context.Script.node -> (ex_comparable_ty * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result
val parse_any_ty : Alpha_context.context -> legacy:bool -> Alpha_context.Script.node -> (ex_ty * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result

parse_ty allowing big_map values, operations, contract and tickets.

val parse_ty : Alpha_context.context -> legacy:bool -> allow_lazy_storage:bool -> allow_operation:bool -> allow_contract:bool -> allow_ticket:bool -> Alpha_context.Script.node -> (ex_ty * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result

We expose parse_ty for convenience to external tools. Please use specialized versions such as parse_packable_ty, parse_parameter_ty, parse_comparable_ty, or parse_big_map_value_ty if possible.

val unparse_ty : Alpha_context.context -> 'a Script_typed_ir.ty -> (Alpha_context.Script.node * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result
val ty_of_comparable_ty : 'a Script_typed_ir.comparable_ty -> 'a Script_typed_ir.ty
val deduce_type_size : remaining:int -> 't Script_typed_ir.ty -> int

deduce_type_size ~remaining ty returns remaining minus the size of type ty or any negative value if that result would be negative. It is guaranteed to not grow the stack by more than remaining non-tail calls.

val check_comparable_type_size : legacy:bool -> Alpha_context.context -> loc:Alpha_context.Script.location -> 't Script_typed_ir.comparable_ty -> (unit, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result

check_comparable_type_size ~legacy ctxt ~loc ty checks that the size of type ty is not larger than the constant maximum_type_size from the context ctxt. If the check fails, an error Type_too_large is returned. If legacy is true, there is no check at all and ok_unit is returned directly.

It is guaranteed to not grow the stack by more than maximum_type_size non-tail calls.

val parse_toplevel : legacy:bool -> Alpha_context.Script.expr -> (Alpha_context.Script.node * Alpha_context.Script.node * Alpha_context.Script.node * Script_typed_ir.field_annot option, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result
val typecheck_code : legacy:bool -> Alpha_context.context -> Alpha_context.Script.expr -> (Script_tc_errors.type_map * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val serialize_ty_for_error : Alpha_context.context -> 'a Script_typed_ir.ty -> (Alpha_context.Script.expr * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result
val parse_code : ?type_logger:type_logger -> Alpha_context.context -> legacy:bool -> code:Alpha_context.Script.lazy_expr -> (ex_code * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val parse_storage : ?type_logger:type_logger -> Alpha_context.context -> legacy:bool -> allow_forged:bool -> 'storage Script_typed_ir.ty -> storage:Alpha_context.Script.lazy_expr -> ('storage * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val parse_script : ?type_logger:type_logger -> Alpha_context.context -> legacy:bool -> allow_forged_in_storage:bool -> Alpha_context.Script.t -> (ex_script * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t

Combines parse_code and parse_storage

val unparse_script : Alpha_context.context -> unparsing_mode -> ('a, 'b) Script_typed_ir.script -> (Alpha_context.Script.t * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val parse_contract : legacy:bool -> Alpha_context.context -> Alpha_context.Script.location -> 'a Script_typed_ir.ty -> Alpha_context.Contract.t -> entrypoint:string -> (Alpha_context.context * 'a Script_typed_ir.typed_contract, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val parse_contract_for_script : Alpha_context.context -> Alpha_context.Script.location -> 'a Script_typed_ir.ty -> Alpha_context.Contract.t -> entrypoint:string -> (Alpha_context.context * 'a Script_typed_ir.typed_contract option, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val find_entrypoint : 't Script_typed_ir.ty -> root_name:Script_typed_ir.field_annot option -> string -> ((Alpha_context.Script.node -> Alpha_context.Script.node) * ex_ty, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result
module Entrypoints_map : sig ... end
val list_entrypoints : 't Script_typed_ir.ty -> Alpha_context.context -> root_name:Script_typed_ir.field_annot option -> (Michelson_v1_primitives.prim list list * (Michelson_v1_primitives.prim list * Alpha_context.Script.node) Entrypoints_map.t, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result
val pack_data : Alpha_context.context -> 'a Script_typed_ir.ty -> 'a -> (bytes * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val hash_comparable_data : Alpha_context.context -> 'a Script_typed_ir.comparable_ty -> 'a -> (Script_expr_hash.t * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val hash_data : Alpha_context.context -> 'a Script_typed_ir.ty -> 'a -> (Script_expr_hash.t * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
type lazy_storage_ids
val no_lazy_storage_id : lazy_storage_ids
val collect_lazy_storage : Alpha_context.context -> 'a Script_typed_ir.ty -> 'a -> (lazy_storage_ids * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result
val list_of_big_map_ids : lazy_storage_ids -> Alpha_context.Big_map.Id.t list
val extract_lazy_storage_diff : Alpha_context.context -> unparsing_mode -> temporary:bool -> to_duplicate:lazy_storage_ids -> to_update:lazy_storage_ids -> 'a Script_typed_ir.ty -> 'a -> ('a * Alpha_context.Lazy_storage.diffs option * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result Lwt.t
val get_single_sapling_state : Alpha_context.context -> 'a Script_typed_ir.ty -> 'a -> (Alpha_context.Sapling.Id.t option * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result