Storage.Slashed_depositsHistory of slashed deposits: an associative list of cycles to slashed percentages.
This storage is inefficient but is not expected to grow large (as of 2023-11-28, the last slashing on mainnet dates back to:
The slashing percentages are used to compute the real value of stake withdrawals. Currently there is no limit to the age of the events we need to store because there is no such limit for stake withdrawals. At worst we can revisit this decision in a later protocol amendment (in 25 cycles) or clean up this storage manually or automatically.
include Storage_sigs.Non_iterable_indexed_data_storage
with type t := Raw_context.t
with type key = Mavryk_protocol_environment_alpha.Signature.public_key_hash
with type value = Slashed_deposits_history.ttype context = Raw_context.tAn abstract type for keys
type value = Slashed_deposits_history.tThe type of values
val mem : context -> key -> bool Mavryk_protocol_environment_alpha.Lwt.tTells if a given key is already bound to a storage bucket
val get :
context ->
key ->
value Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.tRetrieve a value from the storage bucket at a given key ; returns Storage_errorMissing_key if the key is not set ; returns Storage_errorCorrupted_data if the deserialisation fails.
val find :
context ->
key ->
value option Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.tRetrieve a value from the storage bucket at a given key ; returns None if the value is not set ; returns Storage_error
Corrupted_data if the deserialisation fails.
val update :
context ->
key ->
value ->
Raw_context.t Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.tUpdates the content of a bucket ; returns A Storage_Error
Missing_key if the value does not exist.
val init :
context ->
key ->
value ->
Raw_context.t Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.tAllocates a storage bucket at the given key and initializes it ; returns a Storage_errorExisting_key if the bucket exists.
val add :
context ->
key ->
value ->
Raw_context.t Mavryk_protocol_environment_alpha.Lwt.tAllocates a storage bucket at the given key and initializes it with a value ; just updates it if the bucket exists.
val add_or_remove :
context ->
key ->
value option ->
Raw_context.t Mavryk_protocol_environment_alpha.Lwt.tWhen the value is Some v, allocates the data and initializes it with v ; just updates it if the bucket exists. When the value is None, deletes the storage bucket ; does nothing if the bucket does not exist.
val remove_existing :
context ->
key ->
Raw_context.t Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.tDelete a storage bucket and its contents ; returns a Storage_errorMissing_key if the bucket does not exist.
val remove :
context ->
key ->
Raw_context.t Mavryk_protocol_environment_alpha.Lwt.tRemoves a storage bucket and its contents ; does nothing if the bucket does not exist.
val clear : context -> Raw_context.t Mavryk_protocol_environment_alpha.Lwt.tEmpties all the keys and associated data.
val keys : context -> key list Mavryk_protocol_environment_alpha.Lwt.tLists all the keys.
val bindings :
context ->
(key * value) list Mavryk_protocol_environment_alpha.Lwt.tLists all the keys and associated data.
val fold :
context ->
order:[ `Sorted | `Undefined ] ->
init:'a ->
f:(key -> value -> 'a -> 'a Mavryk_protocol_environment_alpha.Lwt.t) ->
'a Mavryk_protocol_environment_alpha.Lwt.tIterates over all the keys and associated data.
val fold_keys :
context ->
order:[ `Sorted | `Undefined ] ->
init:'a ->
f:(key -> 'a -> 'a Mavryk_protocol_environment_alpha.Lwt.t) ->
'a Mavryk_protocol_environment_alpha.Lwt.tIterate over all the keys.
val is_empty : context -> bool Mavryk_protocol_environment_alpha.Lwt.tReturns true iff context is empty.