Delegate_storage.ContractThis module ensures the following invariants:
Storage.Delegates) are self-delegated, that is a delegate's implicit account delegates to itself (i.e. Contract_delegate_storage.find delegate returns delegate),type Mavryk_protocol_environment_alpha.Error_monad.error += | Active_delegate| Empty_delegate_account of Mavryk_protocol_environment_alpha.Signature.Public_key_hash.t| No_deletion of Mavryk_protocol_environment_alpha.Signature.Public_key_hash.t| Current_delegateval 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.tinit ctxt contract delegate registers a delegate when creating a contract.
This functions assumes that contract is allocated.
This function returns the Unregistered_delegate error if contract already has a delegate or if delegate is not a registered delegate.
val set :
Raw_context.t ->
Contract_repr.t ->
Mavryk_protocol_environment_alpha.Signature.Public_key_hash.t option ->
Raw_context.t Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.tset ctxt contract delegate_opt allows to set the delegate of a contract to delegate when delegate_opt = Some delegate or to unset the delegate when delegate_opt = None. When delegate_opt = Some contract (aka self-delegation), the function also registers the contract as a delegate and sets the delegate as active.
It returns the Unregistered_delegate error when self-delegating and when the public key is not yet revealed. It returns the Empty_delegate_account error when self-delegating and the implicit account is not allocated. It returns the Active_delegate error when self-delegating and the delegate is already active. It returns the Unregistered_delegate error when trying to set the delegate to an unregistered delegate. It returns the Current_delegate error when contract is already delegated to the same delegate. It returns the No_deletion error when trying to unset or change the delegate of a registered delegate.