From 7e6a59b6acf0ab1390da416293ca0b3e5d11fca8 Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Wed, 3 Dec 2025 18:16:18 +0100 Subject: [PATCH] chore: make ethconfig work with headermut (#20102) --- crates/primitives-traits/src/header/header_mut.rs | 7 +++++++ crates/rpc/rpc-eth-api/src/helpers/config.rs | 13 +++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/crates/primitives-traits/src/header/header_mut.rs b/crates/primitives-traits/src/header/header_mut.rs index 7994fc0ef6..d0eec1a8ff 100644 --- a/crates/primitives-traits/src/header/header_mut.rs +++ b/crates/primitives-traits/src/header/header_mut.rs @@ -14,6 +14,9 @@ pub trait HeaderMut: BlockHeader { /// Updates the block number. fn set_block_number(&mut self, number: BlockNumber); + /// Updates the block's timestamp. + fn set_timestamp(&mut self, number: BlockNumber); + /// Updates the block state root. fn set_state_root(&mut self, state_root: B256); @@ -35,6 +38,10 @@ impl HeaderMut for Header { self.number = number; } + fn set_timestamp(&mut self, number: BlockNumber) { + self.timestamp = number; + } + fn set_state_root(&mut self, state_root: B256) { self.state_root = state_root; } diff --git a/crates/rpc/rpc-eth-api/src/helpers/config.rs b/crates/rpc/rpc-eth-api/src/helpers/config.rs index c4014e6f20..c927702557 100644 --- a/crates/rpc/rpc-eth-api/src/helpers/config.rs +++ b/crates/rpc/rpc-eth-api/src/helpers/config.rs @@ -1,6 +1,6 @@ //! Loads chain configuration. -use alloy_consensus::Header; +use alloy_consensus::{BlockHeader, Header}; use alloy_eips::eip7910::{EthConfig, EthForkConfig, SystemContract}; use alloy_evm::precompiles::Precompile; use alloy_primitives::Address; @@ -9,6 +9,7 @@ use reth_chainspec::{ChainSpecProvider, EthChainSpec, EthereumHardforks, Hardfor use reth_errors::{ProviderError, RethError}; use reth_evm::{precompiles::PrecompilesMap, ConfigureEvm, Evm}; use reth_node_api::NodePrimitives; +use reth_primitives_traits::header::HeaderMut; use reth_revm::db::EmptyDB; use reth_rpc_eth_types::EthApiError; use reth_storage_api::BlockReaderIdExt; @@ -35,9 +36,9 @@ pub struct EthConfigHandler { impl EthConfigHandler where Provider: ChainSpecProvider - + BlockReaderIdExt
+ + BlockReaderIdExt + 'static, - Evm: ConfigureEvm> + 'static, + Evm: ConfigureEvm> + 'static, { /// Creates a new [`EthConfigHandler`]. pub const fn new(provider: Provider, evm_config: Evm) -> Self { @@ -100,7 +101,7 @@ where let (current_fork_idx, current_fork_timestamp) = fork_timestamps .iter() - .position(|ts| &latest.timestamp < ts) + .position(|ts| &latest.timestamp() < ts) .and_then(|idx| idx.checked_sub(1)) .or_else(|| fork_timestamps.len().checked_sub(1)) .and_then(|idx| fork_timestamps.get(idx).map(|ts| (idx, *ts))) @@ -115,7 +116,7 @@ where if let Some(next_fork_timestamp) = fork_timestamps.get(current_fork_idx + 1).copied() { let fake_header = { let mut header = latest.clone(); - header.timestamp = next_fork_timestamp; + header.set_timestamp(next_fork_timestamp); header }; let next_precompiles = evm_to_precompiles_map( @@ -133,7 +134,7 @@ where let last_fork_timestamp = fork_timestamps.last().copied().unwrap(); let fake_header = { let mut header = latest; - header.timestamp = last_fork_timestamp; + header.set_timestamp(last_fork_timestamp); header }; let last_precompiles = evm_to_precompiles_map(