diff --git a/Cargo.lock b/Cargo.lock index 13202cdb6e..e1c0ef3ab4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -297,9 +297,9 @@ dependencies = [ [[package]] name = "alloy-hardforks" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1692158e9d100486fa6c2429edb42680298678ee74644b058c44f8484a278fea" +checksum = "4e61d55f42faedd980ee3e391aa9ff8ae0fc20723fa1c6d69ac06e06d08fbade" dependencies = [ "alloy-chains", "alloy-eip2124", @@ -414,9 +414,9 @@ dependencies = [ [[package]] name = "alloy-op-hardforks" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20c06d935a1828308f58c10e3da6d08cd611b38daa6aafb625e01f453f4b9944" +checksum = "8ef11121e0eab0e732d89b71f86b907eb23928d3c69ed453905f33a599ca89c0" dependencies = [ "alloy-hardforks", "auto_impl", @@ -8662,6 +8662,7 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-genesis", + "alloy-hardforks", "alloy-primitives", "derive_more 2.0.1", "once_cell", diff --git a/Cargo.toml b/Cargo.toml index acf11ad330..cdfc1937e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -459,7 +459,7 @@ alloy-rlp = { version = "0.3.10", default-features = false, features = ["core-ne alloy-sol-types = { version = "0.8.20", default-features = false } alloy-trie = { version = "0.7.9", default-features = false } -alloy-hardforks = "0.1" +alloy-hardforks = "0.1.2" alloy-consensus = { version = "0.12.6", default-features = false } alloy-contract = { version = "0.12.6", default-features = false } @@ -492,7 +492,7 @@ alloy-transport-ws = { version = "0.12.6", default-features = false } # op alloy-op-evm = { version = "0.1.0-alpha.3", default-features = false } -alloy-op-hardforks = "0.1" +alloy-op-hardforks = "0.1.2" op-alloy-rpc-types = { version = "0.11.2", default-features = false } op-alloy-rpc-types-engine = { version = "0.11.2", default-features = false } op-alloy-network = { version = "0.11.2", default-features = false } diff --git a/crates/chainspec/src/spec.rs b/crates/chainspec/src/spec.rs index 12ac55e50f..5485ffe82d 100644 --- a/crates/chainspec/src/spec.rs +++ b/crates/chainspec/src/spec.rs @@ -478,7 +478,7 @@ impl ChainSpec { /// Returns the hardfork display helper. pub fn display_hardforks(&self) -> DisplayHardforks { - DisplayHardforks::new(&self) + DisplayHardforks::new(self.hardforks.forks_iter()) } /// Get the fork id for the given hardfork. diff --git a/crates/ethereum-forks/src/display.rs b/crates/ethereum-forks/src/display.rs index 99e753cbb8..9d367c672a 100644 --- a/crates/ethereum-forks/src/display.rs +++ b/crates/ethereum-forks/src/display.rs @@ -1,9 +1,10 @@ -use crate::{hardforks::Hardforks, ForkCondition}; +use crate::ForkCondition; use alloc::{ format, string::{String, ToString}, vec::Vec, }; +use alloy_hardforks::Hardfork; /// A container to pretty-print a hardfork. /// @@ -136,12 +137,15 @@ impl core::fmt::Display for DisplayHardforks { impl DisplayHardforks { /// Creates a new [`DisplayHardforks`] from an iterator of hardforks. - pub fn new(hardforks: &H) -> Self { + pub fn new<'a, I>(hardforks: I) -> Self + where + I: IntoIterator, + { let mut pre_merge = Vec::new(); let mut with_merge = Vec::new(); let mut post_merge = Vec::new(); - for (fork, condition) in hardforks.forks_iter() { + for (fork, condition) in hardforks { let mut display_fork = DisplayFork { name: fork.name().to_string(), activated_at: condition, eip: None }; diff --git a/crates/optimism/chainspec/Cargo.toml b/crates/optimism/chainspec/Cargo.toml index b2c48bf36f..1ca0263731 100644 --- a/crates/optimism/chainspec/Cargo.toml +++ b/crates/optimism/chainspec/Cargo.toml @@ -28,6 +28,7 @@ alloy-genesis.workspace = true alloy-primitives.workspace = true alloy-consensus.workspace = true alloy-eips.workspace = true +alloy-hardforks.workspace = true # op op-alloy-rpc-types.workspace = true diff --git a/crates/optimism/chainspec/src/lib.rs b/crates/optimism/chainspec/src/lib.rs index 463c0325c4..3222d55a5e 100644 --- a/crates/optimism/chainspec/src/lib.rs +++ b/crates/optimism/chainspec/src/lib.rs @@ -22,6 +22,7 @@ use alloy_chains::Chain; use alloy_consensus::{proofs::storage_root_unhashed, Header}; use alloy_eips::eip7840::BlobParams; use alloy_genesis::Genesis; +use alloy_hardforks::Hardfork; use alloy_primitives::{B256, U256}; pub use base::BASE_MAINNET; pub use base_sepolia::BASE_SEPOLIA; @@ -30,10 +31,10 @@ pub use dev::OP_DEV; pub use op::OP_MAINNET; pub use op_sepolia::OP_SEPOLIA; use reth_chainspec::{ - BaseFeeParams, BaseFeeParamsKind, ChainSpec, ChainSpecBuilder, DepositContract, EthChainSpec, - EthereumHardforks, ForkFilter, ForkId, Hardforks, Head, + BaseFeeParams, BaseFeeParamsKind, ChainSpec, ChainSpecBuilder, DepositContract, + DisplayHardforks, EthChainSpec, EthereumHardforks, ForkFilter, ForkId, Hardforks, Head, }; -use reth_ethereum_forks::{ChainHardforks, EthereumHardfork, ForkCondition, Hardfork}; +use reth_ethereum_forks::{ChainHardforks, EthereumHardfork, ForkCondition}; use reth_network_peers::NodeRecord; use reth_optimism_forks::{OpHardfork, OpHardforks, OP_MAINNET_HARDFORKS}; use reth_optimism_primitives::ADDRESS_L2_TO_L1_MESSAGE_PASSER; @@ -227,7 +228,12 @@ impl EthChainSpec for OpChainSpec { } fn display_hardforks(&self) -> Box { - Box::new(ChainSpec::display_hardforks(self)) + // filter only op hardforks + let op_forks = self.inner.hardforks.forks_iter().filter(|(fork, _)| { + !EthereumHardfork::VARIANTS.iter().any(|h| h.name() == (*fork).name()) + }); + + Box::new(DisplayHardforks::new(op_forks)) } fn genesis_header(&self) -> &Self::Header { @@ -1055,4 +1061,12 @@ mod tests { let chainspec = OpChainSpec::from_genesis(genesis); assert!(chainspec.is_holocene_active_at_timestamp(1732633200)); } + + #[test] + fn display_hardorks() { + let content = BASE_MAINNET.display_hardforks().to_string(); + for eth_hf in EthereumHardfork::VARIANTS { + assert!(!content.contains(eth_hf.name())); + } + } }