package tezos-protocol-alpha
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:
- 2021-12-17 for double baking (154 events in total),
- 2019-08-08 for double endorsing (24 events in total). Since slashings are here grouped by baker and cycle, there would only be a few elements in each list.
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 = Tezos_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 Tezos_protocol_environment_alpha.Lwt.t
Tells if a given key is already bound to a storage bucket
val get :
context ->
key ->
value Tezos_protocol_environment_alpha.Error_monad.tzresult
Tezos_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 Tezos_protocol_environment_alpha.Error_monad.tzresult
Tezos_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 Tezos_protocol_environment_alpha.Error_monad.tzresult
Tezos_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 Tezos_protocol_environment_alpha.Error_monad.tzresult
Tezos_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 Tezos_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 Tezos_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 Tezos_protocol_environment_alpha.Error_monad.tzresult
Tezos_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 Tezos_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 Tezos_protocol_environment_alpha.Lwt.t
Empties all the keys and associated data.
val keys : context -> key list Tezos_protocol_environment_alpha.Lwt.t
Lists all the keys.
val bindings :
context ->
(key * value) list Tezos_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 Tezos_protocol_environment_alpha.Lwt.t) ->
'a Tezos_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 Tezos_protocol_environment_alpha.Lwt.t) ->
'a Tezos_protocol_environment_alpha.Lwt.t
Iterate over all the keys.
val is_empty : context -> bool Tezos_protocol_environment_alpha.Lwt.t
Returns true
iff context
is empty.