From cdc7a24d9c34dce17dba19e931c335e624ee6e6d Mon Sep 17 00:00:00 2001 From: Emilia Hane Date: Tue, 16 Dec 2025 13:52:25 +0100 Subject: [PATCH 1/2] Fix todo use jovian chain spec in tests --- Cargo.lock | 1 + crates/optimism/node/Cargo.toml | 1 + crates/optimism/node/src/engine.rs | 54 ++++++++---------------------- 3 files changed, 16 insertions(+), 40 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 34d7480a4e3..a1f4a28abd6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9682,6 +9682,7 @@ dependencies = [ "alloy-consensus", "alloy-genesis", "alloy-network", + "alloy-op-hardforks", "alloy-primitives", "alloy-rpc-types-engine", "alloy-rpc-types-eth", diff --git a/crates/optimism/node/Cargo.toml b/crates/optimism/node/Cargo.toml index 0576b3897f5..d8495d9201b 100644 --- a/crates/optimism/node/Cargo.toml +++ b/crates/optimism/node/Cargo.toml @@ -84,6 +84,7 @@ reth-rpc-eth-types.workspace = true alloy-network.workspace = true futures.workspace = true op-alloy-network.workspace = true +alloy-op-hardforks.workspace = true [features] default = ["reth-codec"] diff --git a/crates/optimism/node/src/engine.rs b/crates/optimism/node/src/engine.rs index 11737f65ce7..c99237627de 100644 --- a/crates/optimism/node/src/engine.rs +++ b/crates/optimism/node/src/engine.rs @@ -301,36 +301,10 @@ mod test { use crate::engine; use alloy_primitives::{b64, Address, B256, B64}; use alloy_rpc_types_engine::PayloadAttributes; - use reth_chainspec::{ChainSpec, ForkCondition, Hardfork}; - use reth_optimism_chainspec::{OpChainSpec, BASE_SEPOLIA}; - use reth_optimism_forks::OpHardfork; + use reth_optimism_chainspec::BASE_SEPOLIA; use reth_provider::noop::NoopProvider; use reth_trie_common::KeccakKeyHasher; - - const JOVIAN_TIMESTAMP: u64 = 1744909000; - - fn get_chainspec() -> Arc { - let mut base_sepolia_spec = BASE_SEPOLIA.inner.clone(); - - // TODO: Remove this once we know the Jovian timestamp - base_sepolia_spec - .hardforks - .insert(OpHardfork::Jovian.boxed(), ForkCondition::Timestamp(JOVIAN_TIMESTAMP)); - - Arc::new(OpChainSpec { - inner: ChainSpec { - chain: base_sepolia_spec.chain, - genesis: base_sepolia_spec.genesis, - genesis_header: base_sepolia_spec.genesis_header, - paris_block_and_final_difficulty: base_sepolia_spec - .paris_block_and_final_difficulty, - hardforks: base_sepolia_spec.hardforks, - base_fee_params: base_sepolia_spec.base_fee_params, - prune_delete_limit: 10000, - ..Default::default() - }, - }) - } + use alloy_op_hardforks::BASE_SEPOLIA_JOVIAN_TIMESTAMP; const fn get_attributes( eip_1559_params: Option, @@ -356,7 +330,7 @@ mod test { #[test] fn test_well_formed_attributes_pre_holocene() { let validator = - OpEngineValidator::new::(get_chainspec(), NoopProvider::default()); + OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); let attributes = get_attributes(None, None, 1732633199); let result = as EngineApiValidator< @@ -370,7 +344,7 @@ mod test { #[test] fn test_well_formed_attributes_holocene_no_eip1559_params() { let validator = - OpEngineValidator::new::(get_chainspec(), NoopProvider::default()); + OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); let attributes = get_attributes(None, None, 1732633200); let result = as EngineApiValidator< @@ -384,7 +358,7 @@ mod test { #[test] fn test_well_formed_attributes_holocene_eip1559_params_zero_denominator() { let validator = - OpEngineValidator::new::(get_chainspec(), NoopProvider::default()); + OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); let attributes = get_attributes(Some(b64!("0000000000000008")), None, 1732633200); let result = as EngineApiValidator< @@ -398,7 +372,7 @@ mod test { #[test] fn test_well_formed_attributes_holocene_valid() { let validator = - OpEngineValidator::new::(get_chainspec(), NoopProvider::default()); + OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); let attributes = get_attributes(Some(b64!("0000000800000008")), None, 1732633200); let result = as EngineApiValidator< @@ -412,7 +386,7 @@ mod test { #[test] fn test_well_formed_attributes_holocene_valid_all_zero() { let validator = - OpEngineValidator::new::(get_chainspec(), NoopProvider::default()); + OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); let attributes = get_attributes(Some(b64!("0000000000000000")), None, 1732633200); let result = as EngineApiValidator< @@ -426,8 +400,8 @@ mod test { #[test] fn test_well_formed_attributes_jovian_valid() { let validator = - OpEngineValidator::new::(get_chainspec(), NoopProvider::default()); - let attributes = get_attributes(Some(b64!("0000000000000000")), Some(1), JOVIAN_TIMESTAMP); + OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); + let attributes = get_attributes(Some(b64!("0000000000000000")), Some(1), BASE_SEPOLIA_JOVIAN_TIMESTAMP); let result = as EngineApiValidator< OpEngineTypes, @@ -441,8 +415,8 @@ mod test { #[test] fn test_malformed_attributes_jovian_with_eip_1559_params_none() { let validator = - OpEngineValidator::new::(get_chainspec(), NoopProvider::default()); - let attributes = get_attributes(None, Some(1), JOVIAN_TIMESTAMP); + OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); + let attributes = get_attributes(None, Some(1), BASE_SEPOLIA_JOVIAN_TIMESTAMP); let result = as EngineApiValidator< OpEngineTypes, @@ -456,7 +430,7 @@ mod test { #[test] fn test_malformed_attributes_pre_jovian_with_min_base_fee() { let validator = - OpEngineValidator::new::(get_chainspec(), NoopProvider::default()); + OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); let attributes = get_attributes(Some(b64!("0000000000000000")), Some(1), 1732633200); let result = as EngineApiValidator< @@ -471,8 +445,8 @@ mod test { #[test] fn test_malformed_attributes_post_jovian_with_min_base_fee_none() { let validator = - OpEngineValidator::new::(get_chainspec(), NoopProvider::default()); - let attributes = get_attributes(Some(b64!("0000000000000000")), None, JOVIAN_TIMESTAMP); + OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); + let attributes = get_attributes(Some(b64!("0000000000000000")), None, BASE_SEPOLIA_JOVIAN_TIMESTAMP); let result = as EngineApiValidator< OpEngineTypes, From 4a704edb4b133e1db0f2d083503e29647298ac8f Mon Sep 17 00:00:00 2001 From: Emilia Hane Date: Tue, 16 Dec 2025 13:57:59 +0100 Subject: [PATCH 2/2] Fix lint --- crates/optimism/node/src/engine.rs | 62 ++++++++++++++++++++---------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/crates/optimism/node/src/engine.rs b/crates/optimism/node/src/engine.rs index c99237627de..3b2254f17ef 100644 --- a/crates/optimism/node/src/engine.rs +++ b/crates/optimism/node/src/engine.rs @@ -299,12 +299,12 @@ mod test { use super::*; use crate::engine; + use alloy_op_hardforks::BASE_SEPOLIA_JOVIAN_TIMESTAMP; use alloy_primitives::{b64, Address, B256, B64}; use alloy_rpc_types_engine::PayloadAttributes; use reth_optimism_chainspec::BASE_SEPOLIA; use reth_provider::noop::NoopProvider; use reth_trie_common::KeccakKeyHasher; - use alloy_op_hardforks::BASE_SEPOLIA_JOVIAN_TIMESTAMP; const fn get_attributes( eip_1559_params: Option, @@ -329,8 +329,10 @@ mod test { #[test] fn test_well_formed_attributes_pre_holocene() { - let validator = - OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); + let validator = OpEngineValidator::new::( + BASE_SEPOLIA.clone(), + NoopProvider::default(), + ); let attributes = get_attributes(None, None, 1732633199); let result = as EngineApiValidator< @@ -343,8 +345,10 @@ mod test { #[test] fn test_well_formed_attributes_holocene_no_eip1559_params() { - let validator = - OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); + let validator = OpEngineValidator::new::( + BASE_SEPOLIA.clone(), + NoopProvider::default(), + ); let attributes = get_attributes(None, None, 1732633200); let result = as EngineApiValidator< @@ -357,8 +361,10 @@ mod test { #[test] fn test_well_formed_attributes_holocene_eip1559_params_zero_denominator() { - let validator = - OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); + let validator = OpEngineValidator::new::( + BASE_SEPOLIA.clone(), + NoopProvider::default(), + ); let attributes = get_attributes(Some(b64!("0000000000000008")), None, 1732633200); let result = as EngineApiValidator< @@ -371,8 +377,10 @@ mod test { #[test] fn test_well_formed_attributes_holocene_valid() { - let validator = - OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); + let validator = OpEngineValidator::new::( + BASE_SEPOLIA.clone(), + NoopProvider::default(), + ); let attributes = get_attributes(Some(b64!("0000000800000008")), None, 1732633200); let result = as EngineApiValidator< @@ -385,8 +393,10 @@ mod test { #[test] fn test_well_formed_attributes_holocene_valid_all_zero() { - let validator = - OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); + let validator = OpEngineValidator::new::( + BASE_SEPOLIA.clone(), + NoopProvider::default(), + ); let attributes = get_attributes(Some(b64!("0000000000000000")), None, 1732633200); let result = as EngineApiValidator< @@ -399,9 +409,12 @@ mod test { #[test] fn test_well_formed_attributes_jovian_valid() { - let validator = - OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); - let attributes = get_attributes(Some(b64!("0000000000000000")), Some(1), BASE_SEPOLIA_JOVIAN_TIMESTAMP); + let validator = OpEngineValidator::new::( + BASE_SEPOLIA.clone(), + NoopProvider::default(), + ); + let attributes = + get_attributes(Some(b64!("0000000000000000")), Some(1), BASE_SEPOLIA_JOVIAN_TIMESTAMP); let result = as EngineApiValidator< OpEngineTypes, @@ -414,8 +427,10 @@ mod test { /// After Jovian (and holocene), eip1559 params must be Some #[test] fn test_malformed_attributes_jovian_with_eip_1559_params_none() { - let validator = - OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); + let validator = OpEngineValidator::new::( + BASE_SEPOLIA.clone(), + NoopProvider::default(), + ); let attributes = get_attributes(None, Some(1), BASE_SEPOLIA_JOVIAN_TIMESTAMP); let result = as EngineApiValidator< @@ -429,8 +444,10 @@ mod test { /// Before Jovian, min base fee must be None #[test] fn test_malformed_attributes_pre_jovian_with_min_base_fee() { - let validator = - OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); + let validator = OpEngineValidator::new::( + BASE_SEPOLIA.clone(), + NoopProvider::default(), + ); let attributes = get_attributes(Some(b64!("0000000000000000")), Some(1), 1732633200); let result = as EngineApiValidator< @@ -444,9 +461,12 @@ mod test { /// After Jovian, min base fee must be Some #[test] fn test_malformed_attributes_post_jovian_with_min_base_fee_none() { - let validator = - OpEngineValidator::new::(BASE_SEPOLIA.clone(), NoopProvider::default()); - let attributes = get_attributes(Some(b64!("0000000000000000")), None, BASE_SEPOLIA_JOVIAN_TIMESTAMP); + let validator = OpEngineValidator::new::( + BASE_SEPOLIA.clone(), + NoopProvider::default(), + ); + let attributes = + get_attributes(Some(b64!("0000000000000000")), None, BASE_SEPOLIA_JOVIAN_TIMESTAMP); let result = as EngineApiValidator< OpEngineTypes,