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
An abstract type for keys
type value = Slashed_deposits_history.t
The type of values
val mem : context -> key -> bool Mavryk_protocol_environment_alpha.Lwt.t
Tells 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.t
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.
val find :
context ->
key ->
value option Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t
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.
val update :
context ->
key ->
value ->
Raw_context.t Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t
Updates 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.t
Allocates 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.t
Allocates 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.t
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.
val remove_existing :
context ->
key ->
Raw_context.t Mavryk_protocol_environment_alpha.Error_monad.tzresult
Mavryk_protocol_environment_alpha.Lwt.t
Delete 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.t
Removes 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.t
Empties all the keys and associated data.
val keys : context -> key list Mavryk_protocol_environment_alpha.Lwt.t
Lists all the keys.
val bindings :
context ->
(key * value) list Mavryk_protocol_environment_alpha.Lwt.t
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.
val is_empty : context -> bool Mavryk_protocol_environment_alpha.Lwt.t
Returns true
iff context
is empty.