Module Storage.Slashed_deposits

History 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.t
type context = Raw_context.t

The type of values

Tells if a given key is already bound to a storage bucket

Retrieve 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.

Retrieve 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.

Updates the content of a bucket ; returns A Storage_Error Missing_key if the value does not exist.

Allocates a storage bucket at the given key and initializes it ; returns a Storage_errorExisting_key if the bucket exists.

Allocates a storage bucket at the given key and initializes it with a value ; just updates it if the bucket exists.

When 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.

Delete a storage bucket and its contents ; returns a Storage_errorMissing_key if the bucket does not exist.

Removes a storage bucket and its contents ; does nothing if the bucket does not exist.

Empties all the keys and associated data.

Lists all the keys.

Lists 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.t

Iterates 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.t

Iterate over all the keys.

Returns true iff context is empty.