mirror of
https://github.com/mimblewimble/grin.git
synced 2025-01-21 03:21:08 +03:00
405a4bc985
* Base MMR storage structures Implementations of the MMR append-only file structure and its remove log. The append-only file is backed by a mmap for read access. The remove log is stored in memory for quick checking and backed by a simple file to persist it. * Add PMMR backend buffer, make PMMR Backend mutable * The Backend trait now has &mut self methods, and an &mut reference in PMMR. This simplifies the implementation of all backends by not forcing them to be interior mutable. Slight drawback is that a backend can't be used directly as long as it's used by a PMMR instance. * Introduced a buffer in the PMMR persistent backend to allow reads before the underlying files are fully flushed. Implemented with a temporary VecBackend. * Implement a prune list to use with dense backends The PruneList is useful when implementing compact backends for a PMMR (for example a single large byte array or a file). As nodes get pruned and removed from the backend to free space, the backend will get more compact but positions of a node within the PMMR will not match positions in the backend storage anymore. The PruneList accounts for that mismatch and does the position translation. * PMMR store compaction Implement actual pruning of the underlying PMMR storage by flushing the remove log. This triggers a rewrite of the PMMR nodes data (hashes and sums), removing pruned nodes. The information of what has been removed is kept in a prune list and the remove log is truncated. * PMMR store pruning tests and fixes
18 lines
363 B
TOML
18 lines
363 B
TOML
[package]
|
|
name = "grin_store"
|
|
version = "0.1.0"
|
|
authors = ["Ignotus Peverell <igno.peverell@protonmail.com>"]
|
|
workspace = ".."
|
|
|
|
[dependencies]
|
|
byteorder = "^0.5"
|
|
env_logger="^0.3.5"
|
|
log = "^0.3"
|
|
memmap = { git = "https://github.com/danburkert/memmap-rs" }
|
|
rocksdb = "^0.7.0"
|
|
|
|
grin_core = { path = "../core" }
|
|
|
|
[dev-dependencies]
|
|
env_logger="^0.3.5"
|
|
time = "^0.1"
|