mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-03 00:31:50 +00:00
Add test flag to override SYNC_TOLERANCE_EPOCHS for range sync testing (#7030)
Related to #6880, an issue that's usually observed on local devnets with small number of nodes. When testing range sync, I usually shutdown a node for some period of time and restart it again. However, if it's within `SYNC_TOLERANCE_EPOCHS` (8), Lighthouse would consider the node as synced, and if it may attempt to produce a block if requested by a validator - on a local devnet, nodes frequently produce blocks - when this happens, the node ends up producing a block that would revert finality and would get disconnected from peers immediately. NOTE: This is PR#7030 cherry-picked from `unstable` to `release-v7.0.0`. Run Lighthouse BN with this flag to override: ``` --sync-tolerance--epoch 0 ```
This commit is contained in:
committed by
Michael Sproul
parent
522b3cbaab
commit
fe0cf9cb67
@@ -112,7 +112,7 @@ const API_PREFIX: &str = "eth";
|
||||
///
|
||||
/// This helps prevent attacks where nodes can convince us that we're syncing some non-existent
|
||||
/// finalized head.
|
||||
const SYNC_TOLERANCE_EPOCHS: u64 = 8;
|
||||
const DEFAULT_SYNC_TOLERANCE_EPOCHS: u64 = 8;
|
||||
|
||||
/// A custom type which allows for both unsecured and TLS-enabled HTTP servers.
|
||||
type HttpServer = (SocketAddr, Pin<Box<dyn Future<Output = ()> + Send>>);
|
||||
@@ -157,6 +157,7 @@ pub struct Config {
|
||||
pub duplicate_block_status_code: StatusCode,
|
||||
pub enable_light_client_server: bool,
|
||||
pub target_peers: usize,
|
||||
pub sync_tolerance_epochs: Option<u64>,
|
||||
}
|
||||
|
||||
impl Default for Config {
|
||||
@@ -173,6 +174,7 @@ impl Default for Config {
|
||||
duplicate_block_status_code: StatusCode::ACCEPTED,
|
||||
enable_light_client_server: true,
|
||||
target_peers: 100,
|
||||
sync_tolerance_epochs: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -473,7 +475,10 @@ pub fn serve<T: BeaconChainTypes>(
|
||||
)
|
||||
})?;
|
||||
|
||||
let tolerance = SYNC_TOLERANCE_EPOCHS * T::EthSpec::slots_per_epoch();
|
||||
let sync_tolerance_epochs = config
|
||||
.sync_tolerance_epochs
|
||||
.unwrap_or(DEFAULT_SYNC_TOLERANCE_EPOCHS);
|
||||
let tolerance = sync_tolerance_epochs * T::EthSpec::slots_per_epoch();
|
||||
|
||||
if head_slot + tolerance >= current_slot {
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user