Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,9 @@ alloy-transport = { version = "1.0.5", default-features = false }
alloy-transport-http = { version = "1.0.5", default-features = false }
alloy-transport-ipc = { version = "1.0.5", default-features = false }
alloy-transport-ws = { version = "1.0.5", default-features = false }
alloy-hardforks = { version = "0.2.2", default-features = false }
alloy-op-hardforks = { version = "0.2.2", default-features = false }


## alloy-core
alloy-dyn-abi = "1.0"
Expand Down
2 changes: 2 additions & 0 deletions crates/anvil/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ alloy-transport.workspace = true
alloy-chains.workspace = true
alloy-genesis.workspace = true
alloy-trie.workspace = true
alloy-hardforks.workspace = true
alloy-op-hardforks.workspace = true
op-alloy-consensus = { workspace = true, features = ["serde"] }

# revm
Expand Down
62 changes: 32 additions & 30 deletions crates/anvil/src/hardfork.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use std::str::FromStr;

use alloy_hardforks::ethereum::mainnet::*;
use alloy_rpc_types::BlockNumberOrTag;
use eyre::bail;
use op_revm::OpSpecId;
Expand Down Expand Up @@ -60,22 +61,23 @@ impl EthereumHardfork {
/// Get the first block number of the hardfork.
pub fn fork_block(&self) -> u64 {
match *self {
Self::Frontier => 0,
Self::Homestead => 1150000,
Self::Dao => 1920000,
Self::Tangerine => 2463000,
Self::SpuriousDragon => 2675000,
Self::Byzantium => 4370000,
Self::Constantinople | Self::Petersburg => 7280000,
Self::Istanbul => 9069000,
Self::Muirglacier => 9200000,
Self::Berlin => 12244000,
Self::London => 12965000,
Self::ArrowGlacier => 13773000,
Self::GrayGlacier => 15050000,
Self::Paris => 15537394,
Self::Shanghai => 17034870,
Self::Cancun | Self::Latest => 19426587,
Self::Frontier => MAINNET_FRONTIER_BLOCK,
Self::Homestead => MAINNET_HOMESTEAD_BLOCK,
Self::Dao => MAINNET_DAO_BLOCK,
Self::Tangerine => MAINNET_TANGERINE_BLOCK,
Self::SpuriousDragon => MAINNET_SPURIOUS_DRAGON_BLOCK,
Self::Byzantium => MAINNET_BYZANTIUM_BLOCK,
Self::Constantinople => MAINNET_CONSTANTINOPLE_BLOCK,
Self::Petersburg => MAINNET_PETERSBURG_BLOCK,
Self::Istanbul => MAINNET_ISTANBUL_BLOCK,
Self::Muirglacier => MAINNET_MUIR_GLACIER_BLOCK,
Self::Berlin => MAINNET_BERLIN_BLOCK,
Self::London => MAINNET_LONDON_BLOCK,
Self::ArrowGlacier => MAINNET_ARROW_GLACIER_BLOCK,
Self::GrayGlacier => MAINNET_GRAY_GLACIER_BLOCK,
Self::Paris => MAINNET_PARIS_BLOCK,
Self::Shanghai => MAINNET_SHANGHAI_BLOCK,
Self::Cancun | Self::Latest => MAINNET_CANCUN_BLOCK,
Self::Prague => 22431084,
}
}
Expand Down Expand Up @@ -146,20 +148,20 @@ impl<T: Into<BlockNumberOrTag>> From<T> for EthereumHardfork {
};

match num {
_i if num < 1_150_000 => Self::Frontier,
_i if num < 1_920_000 => Self::Dao,
_i if num < 2_463_000 => Self::Homestead,
_i if num < 2_675_000 => Self::Tangerine,
_i if num < 4_370_000 => Self::SpuriousDragon,
_i if num < 7_280_000 => Self::Byzantium,
_i if num < 9_069_000 => Self::Constantinople,
_i if num < 9_200_000 => Self::Istanbul,
_i if num < 12_244_000 => Self::Muirglacier,
_i if num < 12_965_000 => Self::Berlin,
_i if num < 13_773_000 => Self::London,
_i if num < 15_050_000 => Self::ArrowGlacier,
_i if num < 17_034_870 => Self::Paris,
_i if num < 19_426_587 => Self::Shanghai,
_i if num < MAINNET_HOMESTEAD_BLOCK => Self::Frontier,
_i if num < MAINNET_DAO_BLOCK => Self::Homestead,
_i if num < MAINNET_TANGERINE_BLOCK => Self::Dao,
_i if num < MAINNET_SPURIOUS_DRAGON_BLOCK => Self::Tangerine,
_i if num < MAINNET_BYZANTIUM_BLOCK => Self::SpuriousDragon,
_i if num < MAINNET_CONSTANTINOPLE_BLOCK => Self::Byzantium,
_i if num < MAINNET_ISTANBUL_BLOCK => Self::Constantinople,
_i if num < MAINNET_MUIR_GLACIER_BLOCK => Self::Istanbul,
_i if num < MAINNET_BERLIN_BLOCK => Self::Muirglacier,
_i if num < MAINNET_LONDON_BLOCK => Self::Berlin,
_i if num < MAINNET_ARROW_GLACIER_BLOCK => Self::London,
_i if num < MAINNET_PARIS_BLOCK => Self::ArrowGlacier,
_i if num < MAINNET_SHANGHAI_BLOCK => Self::Paris,
_i if num < MAINNET_CANCUN_BLOCK => Self::Shanghai,
_ => Self::Latest,
}
}
Expand Down