Bump sync-tolerance-epoch and make it a cli param

This commit is contained in:
Pawan Dhananjay
2025-02-25 09:45:51 -08:00
parent 279afb0696
commit 0c5580f23f
3 changed files with 14 additions and 8 deletions

View File

@@ -95,6 +95,7 @@ pub struct ChainConfig {
/// This doesn't apply if the node is the block proposer. /// This doesn't apply if the node is the block proposer.
pub blob_publication_batch_interval: Duration, pub blob_publication_batch_interval: Duration,
pub disable_attesting: bool, pub disable_attesting: bool,
pub sync_tolerance_epochs: u64,
} }
impl Default for ChainConfig { impl Default for ChainConfig {
@@ -131,6 +132,7 @@ impl Default for ChainConfig {
blob_publication_batches: 4, blob_publication_batches: 4,
blob_publication_batch_interval: Duration::from_millis(300), blob_publication_batch_interval: Duration::from_millis(300),
disable_attesting: false, disable_attesting: false,
sync_tolerance_epochs: 16,
} }
} }
} }

View File

@@ -107,13 +107,6 @@ use warp_utils::{query::multi_key_query, reject::convert_rejection, uor::Unifyin
const API_PREFIX: &str = "eth"; const API_PREFIX: &str = "eth";
/// If the node is within this many epochs from the head, we declare it to be synced regardless of
/// the network sync state.
///
/// This helps prevent attacks where nodes can convince us that we're syncing some non-existent
/// finalized head.
const SYNC_TOLERANCE_EPOCHS: u64 = 8;
/// A custom type which allows for both unsecured and TLS-enabled HTTP servers. /// A custom type which allows for both unsecured and TLS-enabled HTTP servers.
type HttpServer = (SocketAddr, Pin<Box<dyn Future<Output = ()> + Send>>); type HttpServer = (SocketAddr, Pin<Box<dyn Future<Output = ()> + Send>>);
@@ -157,6 +150,7 @@ pub struct Config {
pub duplicate_block_status_code: StatusCode, pub duplicate_block_status_code: StatusCode,
pub enable_light_client_server: bool, pub enable_light_client_server: bool,
pub target_peers: usize, pub target_peers: usize,
pub sync_tolerance_epochs: usize,
} }
impl Default for Config { impl Default for Config {
@@ -173,6 +167,7 @@ impl Default for Config {
duplicate_block_status_code: StatusCode::ACCEPTED, duplicate_block_status_code: StatusCode::ACCEPTED,
enable_light_client_server: true, enable_light_client_server: true,
target_peers: 100, target_peers: 100,
sync_tolerance_epochs: 16,
} }
} }
} }
@@ -473,7 +468,8 @@ pub fn serve<T: BeaconChainTypes>(
) )
})?; })?;
let tolerance = SYNC_TOLERANCE_EPOCHS * T::EthSpec::slots_per_epoch(); let tolerance =
chain.config.sync_tolerance_epochs * T::EthSpec::slots_per_epoch();
if head_slot + tolerance >= current_slot { if head_slot + tolerance >= current_slot {
Ok(()) Ok(())

View File

@@ -561,6 +561,14 @@ pub fn cli_app() -> Command {
.action(ArgAction::SetTrue) .action(ArgAction::SetTrue)
.display_order(0) .display_order(0)
) )
.arg(
Arg::new("sync-tolerance-epochs")
.long("sync-tolerance-epochs")
.help("If the beacon node is within this many epochs from the head, we declare it to \
be synced regardless of the network sync state")
.action(ArgAction::Set)
.display_order(0)
)
.arg( .arg(
Arg::new("http-sse-capacity-multiplier") Arg::new("http-sse-capacity-multiplier")
.long("http-sse-capacity-multiplier") .long("http-sse-capacity-multiplier")