diff --git a/crates/hardforks/src/hardfork/ethereum.rs b/crates/hardforks/src/hardfork/ethereum.rs index 1f1d7d5..1b63b7b 100644 --- a/crates/hardforks/src/hardfork/ethereum.rs +++ b/crates/hardforks/src/hardfork/ethereum.rs @@ -49,6 +49,17 @@ hardfork!( Prague, /// Osaka: Osaka, + // BPOs: + /// BPO 1 + Bpo1, + /// BPO 2 + Bpo2, + /// BPO 3 + Bpo3, + /// BPO 4 + Bpo4, + /// BPO 5 + Bpo5, } ); @@ -579,6 +590,31 @@ pub trait EthereumHardforks { fn is_paris_active_at_block(&self, block_number: u64) -> bool { self.is_ethereum_fork_active_at_block(EthereumHardfork::Paris, block_number) } + + /// Convenience method to check if [`EthereumHardfork::Bpo1`] is active at a given timestamp. + fn is_bpo1_active_at_timestamp(&self, timestamp: u64) -> bool { + self.is_ethereum_fork_active_at_timestamp(EthereumHardfork::Bpo1, timestamp) + } + + /// Convenience method to check if [`EthereumHardfork::Bpo2`] is active at a given timestamp. + fn is_bpo2_active_at_timestamp(&self, timestamp: u64) -> bool { + self.is_ethereum_fork_active_at_timestamp(EthereumHardfork::Bpo2, timestamp) + } + + /// Convenience method to check if [`EthereumHardfork::Bpo3`] is active at a given timestamp. + fn is_bpo3_active_at_timestamp(&self, timestamp: u64) -> bool { + self.is_ethereum_fork_active_at_timestamp(EthereumHardfork::Bpo3, timestamp) + } + + /// Convenience method to check if [`EthereumHardfork::Bpo4`] is active at a given timestamp. + fn is_bpo4_active_at_timestamp(&self, timestamp: u64) -> bool { + self.is_ethereum_fork_active_at_timestamp(EthereumHardfork::Bpo4, timestamp) + } + + /// Convenience method to check if [`EthereumHardfork::Bpo5`] is active at a given timestamp. + fn is_bpo5_active_at_timestamp(&self, timestamp: u64) -> bool { + self.is_ethereum_fork_active_at_timestamp(EthereumHardfork::Bpo5, timestamp) + } } /// A type allowing to configure activation [`ForkCondition`]s for a given list of @@ -654,6 +690,11 @@ mod tests { "ShAnGhAI", "CaNcUn", "PrAguE", + "Bpo1", + "BPO2", + "bpo3", + "bPo4", + "bpO5", ]; let expected_hardforks = [ EthereumHardfork::Frontier, @@ -674,6 +715,11 @@ mod tests { EthereumHardfork::Shanghai, EthereumHardfork::Cancun, EthereumHardfork::Prague, + EthereumHardfork::Bpo1, + EthereumHardfork::Bpo2, + EthereumHardfork::Bpo3, + EthereumHardfork::Bpo4, + EthereumHardfork::Bpo5, ]; let hardforks: Vec = diff --git a/crates/op-hardforks/src/lib.rs b/crates/op-hardforks/src/lib.rs index 3309066..384187b 100644 --- a/crates/op-hardforks/src/lib.rs +++ b/crates/op-hardforks/src/lib.rs @@ -287,7 +287,7 @@ impl Index for OpChainHardforks { Shanghai => &self[Canyon], Cancun => &self[Ecotone], Prague => &self[Isthmus], - Osaka => panic!("index out of bounds"), + Osaka | Bpo1 | Bpo2 | Bpo3 | Bpo4 | Bpo5 => panic!("index out of bounds"), } } }