Mavkit_smart_rollup_node.Purpose
type 'a t =
| Operating : Mavryk_crypto.Signature.public_key_hash t
| Batching : Mavryk_crypto.Signature.public_key_hash list t
| Cementing : Mavryk_crypto.Signature.public_key_hash t
| Recovering : Mavryk_crypto.Signature.public_key_hash t
| Executing_outbox : Mavryk_crypto.Signature.public_key_hash t
Purposes for operators, indicating their role and thus the kinds of operations that they sign.
existential type for purpose.
val all : ex_purpose list
List of possible purposes for operator specialization.
module Map : Mavryk_base.TzPervasives.Map.S with type key = ex_purpose
type 'a operator =
| Single : Mavryk_crypto.Signature.public_key_hash -> Mavryk_crypto.Signature.public_key_hash
operator
| Multiple : Mavryk_crypto.Signature.public_key_hash list -> Mavryk_crypto.Signature.public_key_hash
list
operator
Operator type. An operator is either a single key or a list of keys.
existential type for operator.
type operators = private ex_operator Map.t
operators
type is a map from purpose to operator. This type is private to control its creation and make sure `kind t
and `kind
operator
are correctly related with `kind
type Mavryk_base.TzPervasives.error +=
| Missing_operator of ex_purpose
| Too_many_operators of {
expected_purposes : ex_purpose list;
given_operators : operators;
}
val to_string_ex_purpose : ex_purpose -> string
to_string_ex_purpose p
returns a string representation of purpose p
.
val pp : Stdlib.Format.formatter -> 'a t -> unit
val pp_ex_purpose : Stdlib.Format.formatter -> ex_purpose -> unit
val of_string_ex_purpose : string -> ex_purpose option
of_string_ex_purpose s
parses a purpose from the given string s
.
val of_string_exn_ex_purpose : string -> ex_purpose
of_string_exn_ex_purpose s
parses a purpose from the given string s
.
val operators_encoding : operators Mavryk_base.TzPervasives.Data_encoding.t
val make_operator :
?default_operator:Mavryk_crypto.Signature.public_key_hash ->
needed_purposes:ex_purpose list ->
(ex_purpose * Mavryk_crypto.Signature.public_key_hash) list ->
operators Mavryk_base.TzPervasives.tzresult
make_operator ?default ~needed_purposes operators
constructs a purpose map from a list of bindings operators
, with a potential default
key. If operators
does not cover all purposes of needed_purposes
and does not contains a default
key then fails.
val replace_operator :
?default_operator:Mavryk_crypto.Signature.public_key_hash ->
needed_purposes:ex_purpose list ->
(ex_purpose * Mavryk_crypto.Signature.public_key_hash) list ->
operators ->
operators Mavryk_base.TzPervasives.tzresult
replace_operator ?default_operator ~needed_purposes purposed_keys
operators
replaces keys of operators
by default_operator
if it's set or by the purposed key in purposed_keys
. It does nothing if default_operator
is not set or purposed_keys
is empty. Similar to make_operator
the returns operators
contains only mapping of purpose from needed_purposes.
val operation_kind : ex_purpose -> Mavkit_smart_rollup.Operation_kind.t list
For each purpose, it returns a list of associated operation kinds.
val of_operation_kind :
Mavkit_smart_rollup.Operation_kind.t list ->
ex_purpose list
For a list of operation kind, it returns a list of associated purpose.
find_operator purpose operators
returns the operator
for the purpose
from the operators
list. The 'kind
type is to know if this purpose allows only one or multiple operators.
val mem_operator : Mavryk_crypto.Signature.public_key_hash -> operators -> bool
mem_operator operator operators
checks of operator
is part of any purpose in operators
.
val operators_bindings : operators -> (ex_purpose * ex_operator) list
function to bypass the private type. The opposite is not exposed so we don't risk corrupting the map with invalid 'kind1
purpose_kind -> 'kind2 operator
mapping where 'kind1 <>
'kind2