Mavryk_raw_protocol_001_PtAtLas.Sapling_storage
module type COMMITMENTS = sig ... end
module Commitments : COMMITMENTS
module Ciphertexts : sig ... end
module Nullifiers : sig ... end
module Roots : sig ... end
Bounded queue of roots. The full size is initialized with the default uncommitted root, that's why roots storage doesn't need to be carbonated. A maximum of one new root is added per protocol level. If multiple transactions for the same shielded pool are processed during the same contract call or several calls in the same block, only the last root will be stored. This property prevents transactions in the same block from depending on each other and guarantees that a transaction will be valid for a least two hours (hence the 120 size) after being forged.
type state = {
id : Lazy_storage_kind.Sapling_state.Id.t option;
diff : Sapling_repr.diff;
memo_size : Sapling_repr.Memo_size.t;
}
This type links the permanent state stored in the context at the specified id together with the ephemeral diff managed by the Michelson interpreter. After a successful execution the diff can be applied to update the state at id. The first time a state is created its id is None, one will be assigned after the first application.
val empty_diff : Sapling_repr.diff
val empty_state :
?id:Lazy_storage_kind.Sapling_state.Id.t ->
memo_size:Sapling_repr.Memo_size.t ->
unit ->
state
val state_from_id :
Raw_context.t ->
Lazy_storage_kind.Sapling_state.Id.t ->
(state * Raw_context.t,
Mavryk_protocol_environment_001_PtAtLas.Error_monad.error
Mavryk_protocol_environment_001_PtAtLas.Error_monad.trace)
Mavryk_protocol_environment_001_PtAtLas.Pervasives.result
Mavryk_protocol_environment_001_PtAtLas.Lwt.t
Returns a state from an existing id.
val init :
Raw_context.t ->
Lazy_storage_kind.Sapling_state.Id.t ->
memo_size:Storage.Sapling.Memo_size.value ->
(Raw_context.t,
Mavryk_protocol_environment_001_PtAtLas.Error_monad.error
Mavryk_protocol_environment_001_PtAtLas.Error_monad.trace)
Mavryk_protocol_environment_001_PtAtLas.Pervasives.result
Mavryk_protocol_environment_001_PtAtLas.Lwt.t
val apply_diff :
Raw_context.t ->
Lazy_storage_kind.Sapling_state.Id.t ->
Sapling_repr.diff ->
(Raw_context.t * Mavryk_protocol_environment_001_PtAtLas.Z.t,
Mavryk_protocol_environment_001_PtAtLas.Error_monad.error
Mavryk_protocol_environment_001_PtAtLas.Error_monad.trace)
Mavryk_protocol_environment_001_PtAtLas.Pervasives.result
Mavryk_protocol_environment_001_PtAtLas.Lwt.t
Applies a diff to a state id stored in the context. Updates Commitments, Ciphertexts and Nullifiers using the diff and updates the Roots using the new Commitments tree.
val root_mem :
Raw_context.t ->
state ->
Mavryk_protocol_environment_001_PtAtLas.Sapling.Hash.t ->
(bool,
Mavryk_protocol_environment_001_PtAtLas.Error_monad.error
Mavryk_protocol_environment_001_PtAtLas.Error_monad.trace)
Mavryk_protocol_environment_001_PtAtLas.Pervasives.result
Mavryk_protocol_environment_001_PtAtLas.Lwt.t
val nullifiers_mem :
Raw_context.t ->
state ->
Mavryk_protocol_environment_001_PtAtLas.Sapling.Nullifier.t ->
(Raw_context.t * bool,
Mavryk_protocol_environment_001_PtAtLas.Error_monad.error
Mavryk_protocol_environment_001_PtAtLas.Error_monad.trace)
Mavryk_protocol_environment_001_PtAtLas.Pervasives.result
Mavryk_protocol_environment_001_PtAtLas.Lwt.t
val nullifiers_add :
state ->
Mavryk_protocol_environment_001_PtAtLas.Sapling.Nullifier.t ->
state
val root_encoding :
Mavryk_protocol_environment_001_PtAtLas.Sapling.Hash.t Data_encoding.t
val get_diff :
Raw_context.t ->
Storage.Sapling.id ->
?offset_commitment:Storage.Sapling.Ciphertexts.key ->
?offset_nullifier:Storage.Sapling.Nullifiers_ordered.key ->
unit ->
(Storage.Sapling.Roots.value * Sapling_repr.diff,
Mavryk_protocol_environment_001_PtAtLas.Error_monad.error
Mavryk_protocol_environment_001_PtAtLas.Error_monad.trace)
Mavryk_protocol_environment_001_PtAtLas.Pervasives.result
Mavryk_protocol_environment_001_PtAtLas.Lwt.t