Skip to content

Commit 7e6a59b

Browse files
authored
chore: make ethconfig work with headermut (#20102)
1 parent 0b3fc30 commit 7e6a59b

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

crates/primitives-traits/src/header/header_mut.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ pub trait HeaderMut: BlockHeader {
1414
/// Updates the block number.
1515
fn set_block_number(&mut self, number: BlockNumber);
1616

17+
/// Updates the block's timestamp.
18+
fn set_timestamp(&mut self, number: BlockNumber);
19+
1720
/// Updates the block state root.
1821
fn set_state_root(&mut self, state_root: B256);
1922

@@ -35,6 +38,10 @@ impl HeaderMut for Header {
3538
self.number = number;
3639
}
3740

41+
fn set_timestamp(&mut self, number: BlockNumber) {
42+
self.timestamp = number;
43+
}
44+
3845
fn set_state_root(&mut self, state_root: B256) {
3946
self.state_root = state_root;
4047
}

crates/rpc/rpc-eth-api/src/helpers/config.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! Loads chain configuration.
22
3-
use alloy_consensus::Header;
3+
use alloy_consensus::{BlockHeader, Header};
44
use alloy_eips::eip7910::{EthConfig, EthForkConfig, SystemContract};
55
use alloy_evm::precompiles::Precompile;
66
use alloy_primitives::Address;
@@ -9,6 +9,7 @@ use reth_chainspec::{ChainSpecProvider, EthChainSpec, EthereumHardforks, Hardfor
99
use reth_errors::{ProviderError, RethError};
1010
use reth_evm::{precompiles::PrecompilesMap, ConfigureEvm, Evm};
1111
use reth_node_api::NodePrimitives;
12+
use reth_primitives_traits::header::HeaderMut;
1213
use reth_revm::db::EmptyDB;
1314
use reth_rpc_eth_types::EthApiError;
1415
use reth_storage_api::BlockReaderIdExt;
@@ -35,9 +36,9 @@ pub struct EthConfigHandler<Provider, Evm> {
3536
impl<Provider, Evm> EthConfigHandler<Provider, Evm>
3637
where
3738
Provider: ChainSpecProvider<ChainSpec: Hardforks + EthereumHardforks>
38-
+ BlockReaderIdExt<Header = Header>
39+
+ BlockReaderIdExt<Header: HeaderMut>
3940
+ 'static,
40-
Evm: ConfigureEvm<Primitives: NodePrimitives<BlockHeader = Header>> + 'static,
41+
Evm: ConfigureEvm<Primitives: NodePrimitives<BlockHeader = Provider::Header>> + 'static,
4142
{
4243
/// Creates a new [`EthConfigHandler`].
4344
pub const fn new(provider: Provider, evm_config: Evm) -> Self {
@@ -100,7 +101,7 @@ where
100101

101102
let (current_fork_idx, current_fork_timestamp) = fork_timestamps
102103
.iter()
103-
.position(|ts| &latest.timestamp < ts)
104+
.position(|ts| &latest.timestamp() < ts)
104105
.and_then(|idx| idx.checked_sub(1))
105106
.or_else(|| fork_timestamps.len().checked_sub(1))
106107
.and_then(|idx| fork_timestamps.get(idx).map(|ts| (idx, *ts)))
@@ -115,7 +116,7 @@ where
115116
if let Some(next_fork_timestamp) = fork_timestamps.get(current_fork_idx + 1).copied() {
116117
let fake_header = {
117118
let mut header = latest.clone();
118-
header.timestamp = next_fork_timestamp;
119+
header.set_timestamp(next_fork_timestamp);
119120
header
120121
};
121122
let next_precompiles = evm_to_precompiles_map(
@@ -133,7 +134,7 @@ where
133134
let last_fork_timestamp = fork_timestamps.last().copied().unwrap();
134135
let fake_header = {
135136
let mut header = latest;
136-
header.timestamp = last_fork_timestamp;
137+
header.set_timestamp(last_fork_timestamp);
137138
header
138139
};
139140
let last_precompiles = evm_to_precompiles_map(

0 commit comments

Comments
 (0)