mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-03 00:31:50 +00:00
Minify slashing protection interchange data (#2380)
## Issue Addressed Closes #2354 ## Proposed Changes Add a `minify` method to `slashing_protection::Interchange` that keeps only the maximum-epoch attestation and maximum-slot block for each validator. Specifically, `minify` constructs "synthetic" attestations (with no `signing_root`) containing the maximum source epoch _and_ the maximum target epoch from the input. This is equivalent to the `minify_synth` algorithm that I've formally verified in this repository: https://github.com/michaelsproul/slashing-proofs ## Additional Info Includes the JSON loading optimisation from #2347
This commit is contained in:
@@ -1,7 +1,12 @@
|
||||
use lazy_static::lazy_static;
|
||||
use slashing_protection::interchange_test::MultiTestCase;
|
||||
use std::fs::File;
|
||||
use std::path::PathBuf;
|
||||
|
||||
lazy_static! {
|
||||
pub static ref TEST_ROOT_DIR: PathBuf = test_root_dir();
|
||||
}
|
||||
|
||||
fn download_tests() {
|
||||
let make_output = std::process::Command::new("make")
|
||||
.current_dir(std::env::var("CARGO_MANIFEST_DIR").unwrap())
|
||||
@@ -22,7 +27,7 @@ fn test_root_dir() -> PathBuf {
|
||||
|
||||
#[test]
|
||||
fn generated() {
|
||||
for entry in test_root_dir()
|
||||
for entry in TEST_ROOT_DIR
|
||||
.join("generated")
|
||||
.read_dir()
|
||||
.unwrap()
|
||||
@@ -30,6 +35,20 @@ fn generated() {
|
||||
{
|
||||
let file = File::open(entry.path()).unwrap();
|
||||
let test_case: MultiTestCase = serde_json::from_reader(&file).unwrap();
|
||||
test_case.run();
|
||||
test_case.run(false);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn generated_with_minification() {
|
||||
for entry in TEST_ROOT_DIR
|
||||
.join("generated")
|
||||
.read_dir()
|
||||
.unwrap()
|
||||
.map(Result::unwrap)
|
||||
{
|
||||
let file = File::open(entry.path()).unwrap();
|
||||
let test_case: MultiTestCase = serde_json::from_reader(&file).unwrap();
|
||||
test_case.run(true);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user