multiversx_chain_vm/schedule/
gas_schedule_version.rs1use std::fmt;
2
3use super::GasSchedule;
4
5#[derive(Clone, Copy, Default, Debug)]
6pub enum GasScheduleVersion {
7 #[default]
8 Zero,
9 V1,
10 V2,
11 V3,
12 V4,
13 V5,
14 V6,
15 V7,
16 V8,
17}
18
19impl fmt::Display for GasScheduleVersion {
20 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
21 write!(f, "gasScheduleV{}.toml", *self as u8 + 1)
22 }
23}
24
25pub fn parse_gas_schedule(content: &str) -> GasSchedule {
26 GasSchedule::from_toml_str(content).expect("error parsing gas schedule toml")
27}
28
29impl GasScheduleVersion {
30 pub fn load_gas_schedule(&self) -> GasSchedule {
31 match self {
32 GasScheduleVersion::Zero => GasSchedule::default(),
33 GasScheduleVersion::V1 => parse_gas_schedule(super::GAS_SCHEDULE_V1_TOML),
34 GasScheduleVersion::V2 => parse_gas_schedule(super::GAS_SCHEDULE_V2_TOML),
35 GasScheduleVersion::V3 => parse_gas_schedule(super::GAS_SCHEDULE_V3_TOML),
36 GasScheduleVersion::V4 => parse_gas_schedule(super::GAS_SCHEDULE_V4_TOML),
37 GasScheduleVersion::V5 => parse_gas_schedule(super::GAS_SCHEDULE_V5_TOML),
38 GasScheduleVersion::V6 => parse_gas_schedule(super::GAS_SCHEDULE_V6_TOML),
39 GasScheduleVersion::V7 => parse_gas_schedule(super::GAS_SCHEDULE_V7_TOML),
40 GasScheduleVersion::V8 => parse_gas_schedule(super::GAS_SCHEDULE_V8_TOML),
41 }
42 }
43}