Module 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 +=
  1. | 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.

    *)

check_not_mv4 pkh checks that pkh is not a BLS address.

find ctxt contract returns the delegate associated to contract, or None if contract has no delegate.

is_delegate ctxt pkh returns whether pkh is a delegate.

type delegate_status =
  1. | Delegate
  2. | Delegated of Mavryk_protocol_environment_alpha.Signature.Public_key_hash.t
  3. | 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.

get_delegate_status ctxt pkh returns the delegation status associated to pkh.

init ctxt contract delegate sets the delegate associated to contract.

This function assumes that contract does not have a delegate already.

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.

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.

set ctxt contract delegate updates the delegate associated to contract.

This function assumes that contract is allocated and has a delegate.

delegated_contracts ctxt delegate returns the list of contracts (implicit or originated) that delegated to delegate.