Mavryk_raw_protocol_alpha.Contract_delegate_storage
This module deals with the delegates of a contract. It is responsible for maintaining the tables Storage.Contract.Delegate
and Storage.Contract.Delegated
.
type Mavryk_protocol_environment_alpha.Error_monad.error +=
| Forbidden_mv4_delegate of Mavryk_protocol_environment_alpha.Bls.Public_key_hash.t
Delegates cannot be mv4 accounts (i.e. BLS public key hashes). This error is returned when we try to register such a delegate.
*)val check_not_mv4 :
Mavryk_protocol_environment_alpha.Signature.public_key_hash ->
unit Mavryk_protocol_environment_alpha.Error_monad.tzresult
check_not_mv4 pkh
checks that pkh
is not a BLS address.
val find :
Raw_context.t ->
Contract_repr.t ->
Mavryk_protocol_environment_alpha.Signature.Public_key_hash.t option
Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t
find ctxt contract
returns the delegate associated to contract
, or None
if contract
has no delegate.
val is_delegate :
Raw_context.t ->
Mavryk_protocol_environment_alpha.Signature.Public_key_hash.t ->
bool Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t
is_delegate ctxt pkh
returns whether pkh
is a delegate.
type delegate_status =
| Delegate
| Delegated of Mavryk_protocol_environment_alpha.Signature.Public_key_hash.t
| Undelegated
delegate_status
describes whether an implicit account is a delegate, or if it has a delegate (i.e. other than itself), or has no delegate.
val get_delegate_status :
Raw_context.t ->
Mavryk_protocol_environment_alpha.Signature.Public_key_hash.t ->
delegate_status Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t
get_delegate_status ctxt pkh
returns the delegation status associated to pkh
.
val init :
Raw_context.t ->
Contract_repr.t ->
Mavryk_protocol_environment_alpha.Signature.Public_key_hash.t ->
Raw_context.t Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t
init ctxt contract delegate
sets the delegate
associated to contract
.
This function assumes that contract
does not have a delegate already.
val unlink :
Raw_context.t ->
Contract_repr.t ->
Raw_context.t Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t
unlink ctxt contract
removes contract
from the list of contracts that delegated to find ctxt contract
, i.e. the output of delegated_contracts
. This function does not affect the value of the expression find ctxt contract
.
This function assumes that contract
is allocated.
val delete :
Raw_context.t ->
Contract_repr.t ->
Raw_context.t Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t
delete ctxt contract
behaves as unlink ctxt contract
, but in addition removes the association of the contract
to its current delegate, leaving the former without delegate.
This function assumes that contract
is allocated.
val set :
Raw_context.t ->
Contract_repr.t ->
Mavryk_protocol_environment_alpha.Signature.Public_key_hash.t ->
Raw_context.t Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t
set ctxt contract delegate
updates the delegate
associated to contract
.
This function assumes that contract
is allocated and has a delegate.
val delegated_contracts :
Raw_context.t ->
Mavryk_protocol_environment_alpha.Signature.Public_key_hash.t ->
Contract_repr.t list Mavryk_protocol_environment_alpha.Lwt.t
delegated_contracts ctxt delegate
returns the list of contracts (implicit or originated) that delegated to delegate
.