92d597ad23
## Proposed Changes Enable multiple database backends for the slasher, either MDBX (default) or LMDB. The backend can be selected using `--slasher-backend={lmdb,mdbx}`. ## Additional Info In order to abstract over the two library's different handling of database lifetimes I've used `Box::leak` to give the `Environment` type a `'static` lifetime. This was the only way I could think of using 100% safe code to construct a self-referential struct `SlasherDB`, where the `OpenDatabases` refers to the `Environment`. I think this is OK, as the `Environment` is expected to live for the life of the program, and both database engines leave the database in a consistent state after each write. The memory claimed for memory-mapping will be freed by the OS and appropriately flushed regardless of whether the `Environment` is actually dropped. We are depending on two `sigp` forks of `libmdbx-rs` and `lmdb-rs`, to give us greater control over MDBX OS support and LMDB's version.
45 lines
1.4 KiB
TOML
45 lines
1.4 KiB
TOML
[package]
|
|
name = "slasher"
|
|
version = "0.1.0"
|
|
authors = ["Michael Sproul <michael@sigmaprime.io>"]
|
|
edition = "2021"
|
|
|
|
[features]
|
|
default = ["mdbx"]
|
|
mdbx = ["dep:mdbx"]
|
|
lmdb = ["lmdb-rkv", "lmdb-rkv-sys"]
|
|
|
|
[dependencies]
|
|
bincode = "1.3.1"
|
|
byteorder = "1.3.4"
|
|
eth2_ssz = "0.4.1"
|
|
eth2_ssz_derive = "0.3.0"
|
|
flate2 = { version = "1.0.14", features = ["zlib"], default-features = false }
|
|
lazy_static = "1.4.0"
|
|
lighthouse_metrics = { path = "../common/lighthouse_metrics" }
|
|
filesystem = { path = "../common/filesystem" }
|
|
lru = "0.7.1"
|
|
parking_lot = "0.12.0"
|
|
rand = "0.8.5"
|
|
safe_arith = { path = "../consensus/safe_arith" }
|
|
serde = "1.0"
|
|
serde_derive = "1.0"
|
|
slog = "2.5.2"
|
|
sloggers = { version = "2.1.1", features = ["json"] }
|
|
tree_hash = "0.4.1"
|
|
tree_hash_derive = "0.4.0"
|
|
types = { path = "../consensus/types" }
|
|
strum = { version = "0.24.1", features = ["derive"] }
|
|
|
|
# MDBX is pinned at the last version with Windows and macOS support.
|
|
mdbx = { package = "libmdbx", git = "https://github.com/sigp/libmdbx-rs", tag = "v0.1.4", optional = true }
|
|
lmdb-rkv = { git = "https://github.com/sigp/lmdb-rs", rev = "f33845c6469b94265319aac0ed5085597862c27e", optional = true }
|
|
lmdb-rkv-sys = { git = "https://github.com/sigp/lmdb-rs", rev = "f33845c6469b94265319aac0ed5085597862c27e", optional = true }
|
|
|
|
[dev-dependencies]
|
|
maplit = "1.0.2"
|
|
rayon = "1.3.0"
|
|
tempfile = "3.1.0"
|
|
logging = { path = "../common/logging" }
|
|
|