mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-04-30 03:01:58 -04:00
feat: add opstack specific display_hardforks implementation (#15233)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
This commit is contained in:
9
Cargo.lock
generated
9
Cargo.lock
generated
@@ -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",
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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<H: Hardforks>(hardforks: &H) -> Self {
|
||||
pub fn new<'a, I>(hardforks: I) -> Self
|
||||
where
|
||||
I: IntoIterator<Item = (&'a dyn Hardfork, ForkCondition)>,
|
||||
{
|
||||
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 };
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<dyn core::fmt::Display> {
|
||||
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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user