From 1cee814a95a48e51119d62f3de2f37b566ff9a51 Mon Sep 17 00:00:00 2001 From: Odinson Date: Thu, 30 Oct 2025 08:46:07 +0530 Subject: [PATCH 1/3] Fix: custody backfill sync display incorrect time estimation (#8291) Fixes #8268 Switch `est_time` from time until DA boundary slot, to time to finish total custody work from the original earliest data-column slot down to the DA boundary Co-Authored-By: PoulavBhowmick03 --- beacon_node/client/src/notifier.rs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/beacon_node/client/src/notifier.rs b/beacon_node/client/src/notifier.rs index 10d9587ccc..b1cf1bd7f5 100644 --- a/beacon_node/client/src/notifier.rs +++ b/beacon_node/client/src/notifier.rs @@ -298,28 +298,28 @@ pub fn spawn_notifier( let speed = speedo.slots_per_second(); let display_speed = speed.is_some_and(|speed| speed != 0.0); - + let est_time_in_secs = if let (Some(da_boundary_epoch), Some(original_slot)) = ( + beacon_chain.get_column_da_boundary(), + original_earliest_data_column_slot, + ) { + let target = original_slot.saturating_sub( + da_boundary_epoch.start_slot(T::EthSpec::slots_per_epoch()), + ); + speedo.estimated_time_till_slot(target) + } else { + None + }; if display_speed { info!( distance, speed = sync_speed_pretty(speed), - est_time = - estimated_time_pretty(beacon_chain.get_column_da_boundary().and_then( - |da_boundary| speedo.estimated_time_till_slot( - da_boundary.start_slot(T::EthSpec::slots_per_epoch()) - ) - )), + est_time = estimated_time_pretty(est_time_in_secs), "Downloading historical data columns" ); } else { info!( distance, - est_time = - estimated_time_pretty(beacon_chain.get_column_da_boundary().and_then( - |da_boundary| speedo.estimated_time_till_slot( - da_boundary.start_slot(T::EthSpec::slots_per_epoch()) - ) - )), + est_time = estimated_time_pretty(est_time_in_secs), "Downloading historical data columns" ); } From 5978b4a677e320935e7dc5597bf608895a8494f2 Mon Sep 17 00:00:00 2001 From: Jimmy Chen Date: Thu, 30 Oct 2025 15:48:30 +1100 Subject: [PATCH 2/3] Bump gas limit to 60M (#8331) Bump gas limit to 60M as part of Fusaka mainnet release. Co-Authored-By: Jimmy Chen Co-Authored-By: Jimmy Chen --- .../src/test_utils/execution_block_generator.rs | 2 +- beacon_node/execution_layer/src/test_utils/mock_builder.rs | 2 +- book/src/advanced_builders.md | 4 ++-- book/src/help_vc.md | 2 +- lighthouse/tests/validator_client.rs | 2 +- validator_client/lighthouse_validator_store/src/lib.rs | 2 +- validator_client/src/cli.rs | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/beacon_node/execution_layer/src/test_utils/execution_block_generator.rs b/beacon_node/execution_layer/src/test_utils/execution_block_generator.rs index 4836f9307c..f1d07ae258 100644 --- a/beacon_node/execution_layer/src/test_utils/execution_block_generator.rs +++ b/beacon_node/execution_layer/src/test_utils/execution_block_generator.rs @@ -29,7 +29,7 @@ use super::DEFAULT_TERMINAL_BLOCK; const TEST_BLOB_BUNDLE: &[u8] = include_bytes!("fixtures/mainnet/test_blobs_bundle.ssz"); const TEST_BLOB_BUNDLE_V2: &[u8] = include_bytes!("fixtures/mainnet/test_blobs_bundle_v2.ssz"); -pub const DEFAULT_GAS_LIMIT: u64 = 45_000_000; +pub const DEFAULT_GAS_LIMIT: u64 = 60_000_000; const GAS_USED: u64 = DEFAULT_GAS_LIMIT - 1; #[derive(Clone, Debug, PartialEq)] diff --git a/beacon_node/execution_layer/src/test_utils/mock_builder.rs b/beacon_node/execution_layer/src/test_utils/mock_builder.rs index 6b63881d85..df1e371719 100644 --- a/beacon_node/execution_layer/src/test_utils/mock_builder.rs +++ b/beacon_node/execution_layer/src/test_utils/mock_builder.rs @@ -40,7 +40,7 @@ use warp::reply::{self, Reply}; use warp::{Filter, Rejection}; pub const DEFAULT_FEE_RECIPIENT: Address = Address::repeat_byte(42); -pub const DEFAULT_GAS_LIMIT: u64 = 45_000_000; +pub const DEFAULT_GAS_LIMIT: u64 = 60_000_000; pub const DEFAULT_BUILDER_PRIVATE_KEY: &str = "607a11b45a7219cc61a3d9c5fd08c7eebd602a6a19a977f8d3771d5711a550f2"; diff --git a/book/src/advanced_builders.md b/book/src/advanced_builders.md index 3beb7c71c4..7202bd7bb9 100644 --- a/book/src/advanced_builders.md +++ b/book/src/advanced_builders.md @@ -60,7 +60,7 @@ relays, run one of the following services and configure lighthouse to use it wit ## Validator Client Configuration In the validator client you can configure gas limit and fee recipient on a per-validator basis. If no gas limit is -configured, Lighthouse will use a default gas limit of 45,000,000, which is the current default value used in execution +configured, Lighthouse will use a default gas limit of 60,000,000, which is the current default value used in execution engines. You can also enable or disable use of external builders on a per-validator basis rather than using `--builder-proposals`, `--builder-boost-factor` or `--prefer-builder-proposals`, which apply builder related preferences for all validators. In order to manage these configurations per-validator, you can either make updates to the `validator_definitions.yml` file @@ -75,7 +75,7 @@ transaction within the block to the fee recipient, so a discrepancy in fee recip is something afoot. > Note: The gas limit configured here is effectively a vote on block size, so the configuration should not be taken lightly. -> 45,000,000 is currently seen as a value balancing block size with how expensive it is for +> 60,000,000 is currently seen as a value balancing block size with how expensive it is for > the network to validate blocks. So if you don't feel comfortable making an informed "vote", using the default value is > encouraged. We will update the default value if the community reaches a rough consensus on a new value. diff --git a/book/src/help_vc.md b/book/src/help_vc.md index bd6a606ff3..b19ff0ba38 100644 --- a/book/src/help_vc.md +++ b/book/src/help_vc.md @@ -40,7 +40,7 @@ Options: The gas limit to be used in all builder proposals for all validators managed by this validator client. Note this will not necessarily be used if the gas limit set here moves too far from the previous block's - gas limit. [default: 45000000] + gas limit. [default: 60000000] --genesis-state-url A URL of a beacon-API compatible server from which to download the genesis state. Checkpoint sync server URLs can generally be used with diff --git a/lighthouse/tests/validator_client.rs b/lighthouse/tests/validator_client.rs index 913011ea3a..398c6fbd6b 100644 --- a/lighthouse/tests/validator_client.rs +++ b/lighthouse/tests/validator_client.rs @@ -505,7 +505,7 @@ fn no_doppelganger_protection_flag() { fn no_gas_limit_flag() { CommandLineTest::new() .run() - .with_config(|config| assert!(config.validator_store.gas_limit == Some(45_000_000))); + .with_config(|config| assert!(config.validator_store.gas_limit == Some(60_000_000))); } #[test] fn gas_limit_flag() { diff --git a/validator_client/lighthouse_validator_store/src/lib.rs b/validator_client/lighthouse_validator_store/src/lib.rs index ed1ffa6bf6..d10fecb32e 100644 --- a/validator_client/lighthouse_validator_store/src/lib.rs +++ b/validator_client/lighthouse_validator_store/src/lib.rs @@ -56,7 +56,7 @@ const SLASHING_PROTECTION_HISTORY_EPOCHS: u64 = 512; /// Currently used as the default gas limit in execution clients. /// /// https://ethpandaops.io/posts/gaslimit-scaling/. -pub const DEFAULT_GAS_LIMIT: u64 = 45_000_000; +pub const DEFAULT_GAS_LIMIT: u64 = 60_000_000; pub struct LighthouseValidatorStore { validators: Arc>, diff --git a/validator_client/src/cli.rs b/validator_client/src/cli.rs index 85e40ae6d3..477781d3e8 100644 --- a/validator_client/src/cli.rs +++ b/validator_client/src/cli.rs @@ -388,7 +388,7 @@ pub struct ValidatorClient { #[clap( long, value_name = "INTEGER", - default_value_t = 45_000_000, + default_value_t = 60_000_000, requires = "builder_proposals", help = "The gas limit to be used in all builder proposals for all validators managed \ by this validator client. Note this will not necessarily be used if the gas limit \ From 55588f778937485bc21723e5dd808c67fb055a80 Mon Sep 17 00:00:00 2001 From: Eitan Seri-Levi Date: Fri, 31 Oct 2025 01:08:37 -0700 Subject: [PATCH 3/3] Rust 1.91 lints (#8340) Co-Authored-By: Eitan Seri- Levi --- beacon_node/beacon_chain/src/attestation_verification.rs | 2 +- .../beacon_chain/src/sync_committee_verification.rs | 2 +- common/eth2/src/types.rs | 9 ++------- validator_client/http_api/src/tests/keystores.rs | 4 ++-- validator_client/initialized_validators/src/key_cache.rs | 2 +- 5 files changed, 7 insertions(+), 12 deletions(-) diff --git a/beacon_node/beacon_chain/src/attestation_verification.rs b/beacon_node/beacon_chain/src/attestation_verification.rs index 470664d442..f740d221c0 100644 --- a/beacon_node/beacon_chain/src/attestation_verification.rs +++ b/beacon_node/beacon_chain/src/attestation_verification.rs @@ -1344,7 +1344,7 @@ pub fn verify_signed_aggregate_signatures( .spec .fork_at_epoch(indexed_attestation.data().target.epoch); - let signature_sets = vec![ + let signature_sets = [ signed_aggregate_selection_proof_signature_set( |validator_index| pubkey_cache.get(validator_index).map(Cow::Borrowed), signed_aggregate, diff --git a/beacon_node/beacon_chain/src/sync_committee_verification.rs b/beacon_node/beacon_chain/src/sync_committee_verification.rs index f804176921..41d29d5526 100644 --- a/beacon_node/beacon_chain/src/sync_committee_verification.rs +++ b/beacon_node/beacon_chain/src/sync_committee_verification.rs @@ -628,7 +628,7 @@ pub fn verify_signed_aggregate_signatures( (signed_aggregate.message.contribution.slot + 1).epoch(T::EthSpec::slots_per_epoch()); let fork = chain.spec.fork_at_epoch(next_slot_epoch); - let signature_sets = vec![ + let signature_sets = [ signed_sync_aggregate_selection_proof_signature_set( |validator_index| pubkey_cache.get(validator_index).map(Cow::Borrowed), signed_aggregate, diff --git a/common/eth2/src/types.rs b/common/eth2/src/types.rs index 8f553b57d9..f35518ee6b 100644 --- a/common/eth2/src/types.rs +++ b/common/eth2/src/types.rs @@ -1560,20 +1560,15 @@ pub struct ForkChoiceNode { pub execution_block_hash: Option, } -#[derive(Copy, Clone, Debug, Serialize, Deserialize, PartialEq, Eq)] +#[derive(Copy, Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq)] #[serde(rename_all = "snake_case")] pub enum BroadcastValidation { + #[default] Gossip, Consensus, ConsensusAndEquivocation, } -impl Default for BroadcastValidation { - fn default() -> Self { - Self::Gossip - } -} - impl Display for BroadcastValidation { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { diff --git a/validator_client/http_api/src/tests/keystores.rs b/validator_client/http_api/src/tests/keystores.rs index a3c6cb4be3..dd2266e3f6 100644 --- a/validator_client/http_api/src/tests/keystores.rs +++ b/validator_client/http_api/src/tests/keystores.rs @@ -2091,7 +2091,7 @@ async fn import_remotekey_web3signer_disabled() { // Import web3signers. tester .client - .post_lighthouse_validators_web3signer(&vec![web3signer_req]) + .post_lighthouse_validators_web3signer(&[web3signer_req]) .await .unwrap(); @@ -2146,7 +2146,7 @@ async fn import_remotekey_web3signer_enabled() { // Import web3signers. tester .client - .post_lighthouse_validators_web3signer(&vec![web3signer_req.clone()]) + .post_lighthouse_validators_web3signer(&[web3signer_req.clone()]) .await .unwrap(); diff --git a/validator_client/initialized_validators/src/key_cache.rs b/validator_client/initialized_validators/src/key_cache.rs index a5a481923d..b600013c8b 100644 --- a/validator_client/initialized_validators/src/key_cache.rs +++ b/validator_client/initialized_validators/src/key_cache.rs @@ -291,7 +291,7 @@ mod tests { #[tokio::test] async fn test_encryption() { let mut key_cache = KeyCache::new(); - let keypairs = vec![Keypair::random(), Keypair::random()]; + let keypairs = [Keypair::random(), Keypair::random()]; let uuids = vec![Uuid::from_u128(1), Uuid::from_u128(2)]; let passwords = vec![ PlainText::from(vec![1, 2, 3, 4, 5, 6]),