revm_statetest_types/
spec.rs1use revm::specification::hardfork::SpecId;
2use serde::Deserialize;
3
4#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Deserialize, Hash)]
6pub enum SpecName {
7 Frontier,
8 FrontierToHomesteadAt5,
9 Homestead,
10 HomesteadToDaoAt5,
11 HomesteadToEIP150At5,
12 EIP150,
13 EIP158, EIP158ToByzantiumAt5,
15 Byzantium,
16 ByzantiumToConstantinopleAt5, ByzantiumToConstantinopleFixAt5,
18 Constantinople, ConstantinopleFix,
20 Istanbul,
21 Berlin,
22 BerlinToLondonAt5,
23 London,
24 Paris,
25 Merge,
26 Shanghai,
27 Cancun,
28 Prague,
29 Osaka, #[serde(other)]
31 Unknown,
32}
33
34impl SpecName {
35 pub fn to_spec_id(&self) -> SpecId {
37 match self {
38 Self::Frontier => SpecId::FRONTIER,
39 Self::Homestead | Self::FrontierToHomesteadAt5 => SpecId::HOMESTEAD,
40 Self::EIP150 | Self::HomesteadToDaoAt5 | Self::HomesteadToEIP150At5 => {
41 SpecId::TANGERINE
42 }
43 Self::EIP158 => SpecId::SPURIOUS_DRAGON,
44 Self::Byzantium | Self::EIP158ToByzantiumAt5 => SpecId::BYZANTIUM,
45 Self::ConstantinopleFix | Self::ByzantiumToConstantinopleFixAt5 => SpecId::PETERSBURG,
46 Self::Istanbul => SpecId::ISTANBUL,
47 Self::Berlin => SpecId::BERLIN,
48 Self::London | Self::BerlinToLondonAt5 => SpecId::LONDON,
49 Self::Paris | Self::Merge => SpecId::MERGE,
50 Self::Shanghai => SpecId::SHANGHAI,
51 Self::Cancun => SpecId::CANCUN,
52 Self::Prague => SpecId::PRAGUE,
53 Self::Osaka => SpecId::OSAKA,
54 Self::ByzantiumToConstantinopleAt5 | Self::Constantinople => {
55 panic!("Overridden with PETERSBURG")
56 }
57 Self::Unknown => panic!("Unknown spec"),
58 }
59 }
60}