Mavkit_smart_rollup_node.Store_v0
This version of the store is used for the rollup nodes for protocol Mumbai, i.e. = 16.
This interface is a copy of src/proto_016_PtMumbai/lib_sc_rollup_node/store.mli
, which contains the layout for the Mumbai rollup node.
module Irmin_store : sig ... end
module L2_blocks :
Mavryk_layer2_store.Indexed_store.INDEXED_FILE
with type key := Mavryk_base.TzPervasives.Block_hash.t
and type value := (unit, unit) Mavkit_smart_rollup.Sc_rollup_block.block
and type header := Mavkit_smart_rollup.Sc_rollup_block.header
module Messages :
Mavryk_layer2_store.Indexed_store.INDEXED_FILE
with type key := Mavkit_smart_rollup.Merkelized_payload_hashes_hash.t
and type value := string list
and type header :=
Mavryk_base.TzPervasives.Block_hash.t
* Mavryk_base.Time.Protocol.t
* int
Storage for persisting messages downloaded from the L1 node.
module Inboxes :
Mavryk_layer2_store.Indexed_store.SIMPLE_INDEXED_FILE
with type key := Mavkit_smart_rollup.Inbox.Hash.t
and type value := Mavkit_smart_rollup.Inbox.V1.t
and type header := unit
Aggregated collection of messages from the L1 inbox
module Commitments :
Mavryk_layer2_store.Indexed_store.INDEXABLE_STORE
with type key := Mavkit_smart_rollup.Commitment.Hash.t
and type value := Mavkit_smart_rollup.Commitment.t
Storage containing commitments and corresponding commitment hashes that the rollup node has knowledge of.
module Commitments_published_at_level : sig ... end
Storage mapping commitment hashes to the level when they were published by the rollup node. It only contains hashes of commitments published by this rollup node.
module L2_head :
Mavryk_layer2_store.Indexed_store.SINGLETON_STORE
with type value := Mavkit_smart_rollup.Sc_rollup_block.t
module Last_finalized_level :
Mavryk_layer2_store.Indexed_store.SINGLETON_STORE with type value := int32
module Levels_to_hashes :
Mavryk_layer2_store.Indexed_store.INDEXABLE_STORE
with type key := int32
and type value := Mavryk_base.TzPervasives.Block_hash.t
module Dal_slots_headers :
Mavryk_layer2_store.Store_sigs.Nested_map
with type primary_key := Mavryk_base.TzPervasives.Block_hash.t
and type secondary_key := Mavkit_smart_rollup.Dal.Slot_index.t
and type value := Mavkit_smart_rollup.Dal.Slot_header.V1.t
and type 'a store := 'a Irmin_store.t
Published slot headers per block hash, stored as a list of bindings from Dal_slot_index.t
to Dal.Slot.t
. The encoding function converts this list into a Dal.Slot_index.t
-indexed map.
module Dal_processed_slots :
Mavryk_layer2_store.Store_sigs.Nested_map
with type primary_key := Mavryk_base.TzPervasives.Block_hash.t
and type secondary_key := Mavkit_smart_rollup.Dal.Slot_index.t
and type value := [ `Confirmed | `Unconfirmed ]
and type 'a store := 'a Irmin_store.t
Dal_processed_slots
is a Store_utils.Nested_map
used to store the processing status of dal slots content fetched by the rollup node. The values of this storage module have type ``Confirmed | `Unconfirmed
`, depending on whether the content of the slot has been confirmed or not. If an entry is not present for a (block_hash, slot_index)
, this either means that it's not processed yet.
type +'a store = {
l2_blocks : 'a L2_blocks.t;
messages : 'a Messages.t;
inboxes : 'a Inboxes.t;
commitments : 'a Commitments.t;
commitments_published_at_level : 'a Commitments_published_at_level.t;
l2_head : 'a L2_head.t;
last_finalized_level : 'a Last_finalized_level.t;
levels_to_hashes : 'a Levels_to_hashes.t;
irmin_store : 'a Irmin_store.t;
}
include Store_sig.S with type 'a store := 'a store
type 'a t = [< `Read | `Write Read ] as 'a store
Type of store. The parameter indicates if the store can be written or only read.
type rw = Mavryk_layer2_store.Store_sigs.rw t
Read/write store t
.
type ro = Mavryk_layer2_store.Store_sigs.ro t
Read only store t
.
val version : Store_version.t
Version supported by this code.
val close : _ t -> unit Mavryk_base.TzPervasives.tzresult Lwt.t
close store
closes the store.
val load :
'a Mavryk_layer2_store.Store_sigs.mode ->
index_buffer_size:int ->
l2_blocks_cache_size:int ->
string ->
'a store Mavryk_base.TzPervasives.tzresult Lwt.t
load mode ~index_buffer_size ~l2_blocks_cache_size directory
loads a store from the data persisted in directory
. If mode
is Store_sigs
.Read_only, then the indexes and irmin store will be opened in readonly mode and only read operations will be permitted. This allows to open a store for read access that is already opened in Store_sigs
.Read_write mode in another process. index_buffer_size
is the maximum cache size in memory before it is flushed to disk. l2_blocks_cache_size
is the number of L2 blocks the rollup node will keep in memory.
val iter_l2_blocks :
?progress:string ->
Metadata.t ->
_ t ->
(Mavkit_smart_rollup.Sc_rollup_block.t ->
unit Mavryk_base.TzPervasives.tzresult Lwt.t) ->
unit Mavryk_base.TzPervasives.tzresult Lwt.t
iter_l2_blocks ?progress metadata store f
iterates f
on all L2 blocks reachable from the head, from newest to oldest. If progress
is provided, a progress bar is displayed with the progress messages during the iteration.
val gc : rw -> level:int32 -> unit Mavryk_base.TzPervasives.tzresult Lwt.t
gc store ~level
asynchronously garbage collects everything from the store that concerns blocks for levels below level
.
val wait_gc_completion : 'a t -> unit Lwt.t
wait_gc_completion store
returns a blocking thread if a GC run is currently ongoing.