5828ff1204
This is an implementation of a slasher that lives inside the BN and can be enabled via `lighthouse bn --slasher`. Features included in this PR: - [x] Detection of attester slashing conditions (double votes, surrounds existing, surrounded by existing) - [x] Integration into Lighthouse's attestation verification flow - [x] Detection of proposer slashing conditions - [x] Extraction of attestations from blocks as they are verified - [x] Compression of chunks - [x] Configurable history length - [x] Pruning of old attestations and blocks - [x] More tests Future work: * Focus on a slice of history separate from the most recent N epochs (e.g. epochs `current - K` to `current - M`) * Run out-of-process * Ingest attestations from the chain without a resync Design notes are here https://hackmd.io/@sproul/HJSEklmPL
39 lines
1.0 KiB
TOML
39 lines
1.0 KiB
TOML
[package]
|
|
name = "slasher"
|
|
version = "0.1.0"
|
|
authors = ["Michael Sproul <michael@sigmaprime.io>"]
|
|
edition = "2018"
|
|
|
|
[dependencies]
|
|
bincode = "1.3.1"
|
|
byteorder = "1.3.4"
|
|
directory = { path = "../common/directory" }
|
|
eth2_ssz = { path = "../consensus/ssz" }
|
|
eth2_ssz_derive = { path = "../consensus/ssz_derive" }
|
|
flate2 = { version = "1.0.14", features = ["zlib"], default-features = false }
|
|
lazy_static = "1.4.0"
|
|
lighthouse_metrics = { path = "../common/lighthouse_metrics" }
|
|
lmdb = "0.8"
|
|
lmdb-sys = "0.8"
|
|
parking_lot = "0.11.0"
|
|
rand = "0.7"
|
|
safe_arith = { path = "../consensus/safe_arith" }
|
|
serde = "1.0"
|
|
serde_derive = "1.0"
|
|
slog = "2.5.2"
|
|
sloggers = "*"
|
|
slot_clock = { path = "../common/slot_clock" }
|
|
task_executor = { path = "../common/task_executor" }
|
|
tokio = { version = "0.2.21", features = ["full"] }
|
|
tree_hash = { path = "../consensus/tree_hash" }
|
|
tree_hash_derive = { path = "../consensus/tree_hash_derive" }
|
|
types = { path = "../consensus/types" }
|
|
|
|
[dev-dependencies]
|
|
maplit = "1.0.2"
|
|
rayon = "1.3.0"
|
|
tempdir = "0.3.7"
|
|
|
|
[features]
|
|
test_logger = []
|