1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
use clock::ChainEpoch;
use encoding::repr::Serialize_repr;
pub const UPGRADE_BREEZE_HEIGHT: ChainEpoch = 41280;
pub const UPGRADE_SMOKE_HEIGHT: ChainEpoch = 51000;
pub const UPGRADE_IGNITION_HEIGHT: ChainEpoch = 94000;
pub const UPGRADE_ACTORS_V2_HEIGHT: ChainEpoch = 138720;
pub const UPGRADE_TAPE_HEIGHT: ChainEpoch = 140760;
pub const UPGRADE_KUMQUAT_HEIGHT: ChainEpoch = 170000;
pub const UPGRADE_CALICO_HEIGHT: ChainEpoch = 265200;
pub const UPGRADE_PERSIAN_HEIGHT: ChainEpoch = 272400;
pub const UPGRADE_ORANGE_HEIGHT: ChainEpoch = 336458;
pub const UPGRADE_CLAUS_HEIGHT: ChainEpoch = 343200;
pub const UPGRADE_LIFTOFF_HEIGHT: i64 = 148888;
struct Upgrade {
height: ChainEpoch,
network: NetworkVersion,
}
const MAINNET_SCHEDULE: [Upgrade; 9] = [
Upgrade {
height: UPGRADE_BREEZE_HEIGHT,
network: NetworkVersion::V1,
},
Upgrade {
height: UPGRADE_SMOKE_HEIGHT,
network: NetworkVersion::V2,
},
Upgrade {
height: UPGRADE_IGNITION_HEIGHT,
network: NetworkVersion::V3,
},
Upgrade {
height: UPGRADE_ACTORS_V2_HEIGHT,
network: NetworkVersion::V4,
},
Upgrade {
height: UPGRADE_TAPE_HEIGHT,
network: NetworkVersion::V5,
},
Upgrade {
height: UPGRADE_KUMQUAT_HEIGHT,
network: NetworkVersion::V6,
},
Upgrade {
height: UPGRADE_CALICO_HEIGHT,
network: NetworkVersion::V7,
},
Upgrade {
height: UPGRADE_PERSIAN_HEIGHT,
network: NetworkVersion::V8,
},
Upgrade {
height: UPGRADE_ORANGE_HEIGHT,
network: NetworkVersion::V9,
},
];
#[derive(Debug, PartialEq, Clone, Copy, PartialOrd, Serialize_repr)]
#[repr(u32)]
pub enum NetworkVersion {
V0,
V1,
V2,
V3,
V4,
V5,
V6,
V7,
V8,
V9,
V10,
V11,
}
pub fn use_newest_network() -> bool {
if UPGRADE_BREEZE_HEIGHT <= 0 && UPGRADE_SMOKE_HEIGHT <= 0 {
return true;
}
false
}
pub fn get_network_version_default(epoch: ChainEpoch) -> NetworkVersion {
MAINNET_SCHEDULE
.iter()
.filter(|upgrade| epoch > upgrade.height)
.last()
.map(|upgrade| upgrade.network)
.unwrap_or(NetworkVersion::V0)
}