mirror of
https://github.com/sigp/lighthouse.git
synced 2026-04-27 01:33:33 +00:00
De-duplicate attestations in the slasher (#2767)
## Issue Addressed
Closes https://github.com/sigp/lighthouse/issues/2112
Closes https://github.com/sigp/lighthouse/issues/1861
## Proposed Changes
Collect attestations by validator index in the slasher, and use the magic of reference counting to automatically discard redundant attestations. This results in us storing only 1-2% of the attestations observed when subscribed to all subnets, which carries over to a 50-100x reduction in data stored 🎉
## Additional Info
There's some nuance to the configuration of the `slot-offset`. It has a profound effect on the effictiveness of de-duplication, see the docs added to the book for an explanation: 5442e695e5/book/src/slasher.md (slot-offset)
This commit is contained in:
@@ -7,6 +7,7 @@ pub const DEFAULT_CHUNK_SIZE: usize = 16;
|
||||
pub const DEFAULT_VALIDATOR_CHUNK_SIZE: usize = 256;
|
||||
pub const DEFAULT_HISTORY_LENGTH: usize = 4096;
|
||||
pub const DEFAULT_UPDATE_PERIOD: u64 = 12;
|
||||
pub const DEFAULT_SLOT_OFFSET: f64 = 10.5;
|
||||
pub const DEFAULT_MAX_DB_SIZE: usize = 256 * 1024; // 256 GiB
|
||||
pub const DEFAULT_BROADCAST: bool = false;
|
||||
|
||||
@@ -26,12 +27,19 @@ pub struct Config {
|
||||
pub history_length: usize,
|
||||
/// Update frequency in seconds.
|
||||
pub update_period: u64,
|
||||
/// Offset from the start of the slot to begin processing.
|
||||
#[serde(skip, default = "default_slot_offset")]
|
||||
pub slot_offset: f64,
|
||||
/// Maximum size of the LMDB database in megabytes.
|
||||
pub max_db_size_mbs: usize,
|
||||
/// Whether to broadcast slashings found to the network.
|
||||
pub broadcast: bool,
|
||||
}
|
||||
|
||||
fn default_slot_offset() -> f64 {
|
||||
DEFAULT_SLOT_OFFSET
|
||||
}
|
||||
|
||||
impl Config {
|
||||
pub fn new(database_path: PathBuf) -> Self {
|
||||
Self {
|
||||
@@ -40,6 +48,7 @@ impl Config {
|
||||
validator_chunk_size: DEFAULT_VALIDATOR_CHUNK_SIZE,
|
||||
history_length: DEFAULT_HISTORY_LENGTH,
|
||||
update_period: DEFAULT_UPDATE_PERIOD,
|
||||
slot_offset: DEFAULT_SLOT_OFFSET,
|
||||
max_db_size_mbs: DEFAULT_MAX_DB_SIZE,
|
||||
broadcast: DEFAULT_BROADCAST,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user