Skip to content

Commit

Permalink
add is_post_merge implementation for Hardfork (#6204)
Browse files Browse the repository at this point in the history
  • Loading branch information
tcoratger authored Jan 24, 2024
1 parent 02c69d0 commit cff0b12
Showing 1 changed file with 36 additions and 4 deletions.
40 changes: 36 additions & 4 deletions crates/ethereum-forks/src/hardfork.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,18 @@ impl Hardfork {
Hardfork::Canyon => None,
}
}

/// Checks if the hardfork is post the Ethereum merge.
pub fn is_post_merge(&self) -> bool {
self >= &Hardfork::Paris
}
}

impl FromStr for Hardfork {
type Err = String;

fn from_str(s: &str) -> Result<Self, Self::Err> {
let s = s.to_lowercase();
let hardfork = match s.as_str() {
Ok(match s.to_lowercase().as_str() {
"frontier" => Hardfork::Frontier,
"homestead" => Hardfork::Homestead,
"dao" => Hardfork::Dao,
Expand All @@ -119,8 +123,7 @@ impl FromStr for Hardfork {
#[cfg(feature = "optimism")]
"canyon" => Hardfork::Canyon,
_ => return Err(format!("Unknown hardfork: {s}")),
};
Ok(hardfork)
})
}
}

Expand Down Expand Up @@ -197,4 +200,33 @@ mod tests {
fn check_nonexistent_hardfork_from_str() {
assert!(Hardfork::from_str("not a hardfork").is_err());
}

#[test]
fn check_post_merge() {
assert!(!Hardfork::Frontier.is_post_merge());
assert!(!Hardfork::Homestead.is_post_merge());
assert!(!Hardfork::Dao.is_post_merge());
assert!(!Hardfork::Tangerine.is_post_merge());
assert!(!Hardfork::SpuriousDragon.is_post_merge());
assert!(!Hardfork::Byzantium.is_post_merge());
assert!(!Hardfork::Constantinople.is_post_merge());
assert!(!Hardfork::Petersburg.is_post_merge());
assert!(!Hardfork::Istanbul.is_post_merge());
assert!(!Hardfork::MuirGlacier.is_post_merge());
assert!(!Hardfork::Berlin.is_post_merge());
assert!(!Hardfork::London.is_post_merge());
assert!(!Hardfork::ArrowGlacier.is_post_merge());
assert!(!Hardfork::GrayGlacier.is_post_merge());
assert!(Hardfork::Paris.is_post_merge());
assert!(Hardfork::Shanghai.is_post_merge());
assert!(Hardfork::Cancun.is_post_merge());
}

#[test]
#[cfg(feature = "optimism")]
fn check_op_post_merge() {
assert!(Hardfork::Bedrock.is_post_merge());
assert!(Hardfork::Regolith.is_post_merge());
assert!(Hardfork::Canyon.is_post_merge());
}
}

0 comments on commit cff0b12

Please sign in to comment.