mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
Add placeholder OpHardfork::Isthmus (#13112)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
This commit is contained in:
@ -36,7 +36,7 @@ use reth_chainspec::{
|
||||
};
|
||||
use reth_ethereum_forks::{ChainHardforks, EthereumHardfork, ForkCondition, Hardfork};
|
||||
use reth_network_peers::NodeRecord;
|
||||
use reth_optimism_forks::OpHardforks;
|
||||
use reth_optimism_forks::{OpHardfork, OpHardforks};
|
||||
#[cfg(feature = "std")]
|
||||
pub(crate) use std::sync::LazyLock;
|
||||
|
||||
@ -166,6 +166,13 @@ impl OpChainSpecBuilder {
|
||||
self
|
||||
}
|
||||
|
||||
/// Enable Isthmus at genesis
|
||||
pub fn isthmus_activated(mut self) -> Self {
|
||||
self = self.holocene_activated();
|
||||
self.inner = self.inner.with_fork(OpHardfork::Isthmus, ForkCondition::Timestamp(0));
|
||||
self
|
||||
}
|
||||
|
||||
/// Build the resulting [`OpChainSpec`].
|
||||
///
|
||||
/// # Panics
|
||||
@ -414,6 +421,7 @@ impl From<Genesis> for OpChainSpec {
|
||||
(OpHardfork::Fjord.boxed(), genesis_info.fjord_time),
|
||||
(OpHardfork::Granite.boxed(), genesis_info.granite_time),
|
||||
(OpHardfork::Holocene.boxed(), genesis_info.holocene_time),
|
||||
(OpHardfork::Isthmus.boxed(), genesis_info.isthmus_time),
|
||||
];
|
||||
|
||||
let mut time_hardforks = time_hardfork_opts
|
||||
@ -1030,6 +1038,7 @@ mod tests {
|
||||
OpHardfork::Fjord.boxed(),
|
||||
OpHardfork::Granite.boxed(),
|
||||
OpHardfork::Holocene.boxed(),
|
||||
// OpHardfork::Isthmus.boxed(),
|
||||
];
|
||||
|
||||
assert!(expected_hardforks
|
||||
|
||||
@ -12,7 +12,9 @@ pub fn revm_spec_by_timestamp_after_bedrock(
|
||||
chain_spec: &OpChainSpec,
|
||||
timestamp: u64,
|
||||
) -> revm_primitives::SpecId {
|
||||
if chain_spec.fork(OpHardfork::Holocene).active_at_timestamp(timestamp) {
|
||||
if chain_spec.fork(OpHardfork::Isthmus).active_at_timestamp(timestamp) {
|
||||
todo!()
|
||||
} else if chain_spec.fork(OpHardfork::Holocene).active_at_timestamp(timestamp) {
|
||||
revm_primitives::HOLOCENE
|
||||
} else if chain_spec.fork(OpHardfork::Granite).active_at_timestamp(timestamp) {
|
||||
revm_primitives::GRANITE
|
||||
@ -31,7 +33,9 @@ pub fn revm_spec_by_timestamp_after_bedrock(
|
||||
|
||||
/// Map the latest active hardfork at the given block to a revm [`SpecId`](revm_primitives::SpecId).
|
||||
pub fn revm_spec(chain_spec: &OpChainSpec, block: &Head) -> revm_primitives::SpecId {
|
||||
if chain_spec.fork(OpHardfork::Holocene).active_at_head(block) {
|
||||
if chain_spec.fork(OpHardfork::Isthmus).active_at_head(block) {
|
||||
todo!()
|
||||
} else if chain_spec.fork(OpHardfork::Holocene).active_at_head(block) {
|
||||
revm_primitives::HOLOCENE
|
||||
} else if chain_spec.fork(OpHardfork::Granite).active_at_head(block) {
|
||||
revm_primitives::GRANITE
|
||||
|
||||
@ -33,6 +33,8 @@ hardfork!(
|
||||
Granite,
|
||||
/// Holocene: <https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/superchain-upgrades.md#holocene>
|
||||
Holocene,
|
||||
/// Isthmus: <https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/isthmus/overview.md>
|
||||
Isthmus,
|
||||
}
|
||||
);
|
||||
|
||||
@ -159,6 +161,7 @@ impl OpHardfork {
|
||||
Self::Fjord => Some(1716998400),
|
||||
Self::Granite => Some(1723478400),
|
||||
Self::Holocene => Some(1732633200),
|
||||
Self::Isthmus => todo!(),
|
||||
},
|
||||
)
|
||||
}
|
||||
@ -194,6 +197,7 @@ impl OpHardfork {
|
||||
Self::Fjord => Some(1720627201),
|
||||
Self::Granite => Some(1726070401),
|
||||
Self::Holocene => None,
|
||||
Self::Isthmus => todo!(),
|
||||
},
|
||||
)
|
||||
}
|
||||
@ -357,7 +361,7 @@ mod tests {
|
||||
#[test]
|
||||
fn check_op_hardfork_from_str() {
|
||||
let hardfork_str =
|
||||
["beDrOck", "rEgOlITH", "cAnYoN", "eCoToNe", "FJorD", "GRaNiTe", "hOlOcEnE"];
|
||||
["beDrOck", "rEgOlITH", "cAnYoN", "eCoToNe", "FJorD", "GRaNiTe", "hOlOcEnE", "isthMUS"];
|
||||
let expected_hardforks = [
|
||||
OpHardfork::Bedrock,
|
||||
OpHardfork::Regolith,
|
||||
@ -366,6 +370,7 @@ mod tests {
|
||||
OpHardfork::Fjord,
|
||||
OpHardfork::Granite,
|
||||
OpHardfork::Holocene,
|
||||
OpHardfork::Isthmus,
|
||||
];
|
||||
|
||||
let hardforks: Vec<OpHardfork> =
|
||||
|
||||
@ -27,6 +27,12 @@ pub trait OpHardforks: EthereumHardforks {
|
||||
self.fork(OpHardfork::Bedrock).active_at_block(block_number)
|
||||
}
|
||||
|
||||
/// Returns `true` if [`Regolith`](OpHardfork::Regolith) is active at given block
|
||||
/// timestamp.
|
||||
fn is_regolith_active_at_timestamp(&self, timestamp: u64) -> bool {
|
||||
self.fork(OpHardfork::Regolith).active_at_timestamp(timestamp)
|
||||
}
|
||||
|
||||
/// Returns `true` if [`Canyon`](OpHardfork::Canyon) is active at given block timestamp.
|
||||
fn is_canyon_active_at_timestamp(&self, timestamp: u64) -> bool {
|
||||
self.fork(OpHardfork::Canyon).active_at_timestamp(timestamp)
|
||||
@ -53,9 +59,9 @@ pub trait OpHardforks: EthereumHardforks {
|
||||
self.fork(OpHardfork::Holocene).active_at_timestamp(timestamp)
|
||||
}
|
||||
|
||||
/// Returns `true` if [`Regolith`](OpHardfork::Regolith) is active at given block
|
||||
/// Returns `true` if [`Isthmus`](OpHardfork::Isthmus) is active at given block
|
||||
/// timestamp.
|
||||
fn is_regolith_active_at_timestamp(&self, timestamp: u64) -> bool {
|
||||
self.fork(OpHardfork::Regolith).active_at_timestamp(timestamp)
|
||||
fn is_isthmus_active_at_timestamp(&self, timestamp: u64) -> bool {
|
||||
self.fork(OpHardfork::Isthmus).active_at_timestamp(timestamp)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user