2
2
3
3
use crate :: blockchains:: chains:: Chain ;
4
4
use crate :: constants:: {
5
- AMOY_TESTNET_CONTRACT_CREATION_BLOCK , DEV_CHAIN_FULL_IDENTIFIER ,
6
- ETH_MAINNET_CONTRACT_CREATION_BLOCK , ETH_MAINNET_FULL_IDENTIFIER , ETH_ROPSTEN_FULL_IDENTIFIER ,
7
- MULTINODE_TESTNET_CONTRACT_CREATION_BLOCK , POLYGON_AMOY_FULL_IDENTIFIER ,
8
- POLYGON_MAINNET_CONTRACT_CREATION_BLOCK , POLYGON_MAINNET_FULL_IDENTIFIER ,
9
- ROPSTEN_TESTNET_CONTRACT_CREATION_BLOCK ,
5
+ BASE_MAINNET_CONTRACT_CREATION_BLOCK , BASE_MAINNET_FULL_IDENTIFIER ,
6
+ BASE_SEPOLIA_CONTRACT_CREATION_BLOCK , BASE_SEPOLIA_FULL_IDENTIFIER , DEV_CHAIN_FULL_IDENTIFIER ,
7
+ ETH_MAINNET_CONTRACT_CREATION_BLOCK , ETH_MAINNET_FULL_IDENTIFIER ,
8
+ ETH_ROPSTEN_CONTRACT_CREATION_BLOCK , ETH_ROPSTEN_FULL_IDENTIFIER ,
9
+ MULTINODE_TESTNET_CONTRACT_CREATION_BLOCK , POLYGON_AMOY_CONTRACT_CREATION_BLOCK ,
10
+ POLYGON_AMOY_FULL_IDENTIFIER , POLYGON_MAINNET_CONTRACT_CREATION_BLOCK ,
11
+ POLYGON_MAINNET_FULL_IDENTIFIER ,
10
12
} ;
11
13
use ethereum_types:: { Address , H160 } ;
12
14
13
- pub const CHAINS : [ BlockchainRecord ; 5 ] = [
15
+ pub const CHAINS : [ BlockchainRecord ; 7 ] = [
14
16
BlockchainRecord {
15
17
self_id : Chain :: PolyMainnet ,
16
18
num_chain_id : 137 ,
@@ -25,19 +27,33 @@ pub const CHAINS: [BlockchainRecord; 5] = [
25
27
contract : ETH_MAINNET_CONTRACT_ADDRESS ,
26
28
contract_creation_block : ETH_MAINNET_CONTRACT_CREATION_BLOCK ,
27
29
} ,
30
+ BlockchainRecord {
31
+ self_id : Chain :: BaseMainnet ,
32
+ num_chain_id : 8453 ,
33
+ literal_identifier : BASE_MAINNET_FULL_IDENTIFIER ,
34
+ contract : BASE_MAINNET_CONTRACT_ADDRESS ,
35
+ contract_creation_block : BASE_MAINNET_CONTRACT_CREATION_BLOCK ,
36
+ } ,
37
+ BlockchainRecord {
38
+ self_id : Chain :: BaseSepolia ,
39
+ num_chain_id : 84532 ,
40
+ literal_identifier : BASE_SEPOLIA_FULL_IDENTIFIER ,
41
+ contract : BASE_SEPOLIA_TESTNET_CONTRACT_ADDRESS ,
42
+ contract_creation_block : BASE_SEPOLIA_CONTRACT_CREATION_BLOCK ,
43
+ } ,
28
44
BlockchainRecord {
29
45
self_id : Chain :: PolyAmoy ,
30
46
num_chain_id : 80002 ,
31
47
literal_identifier : POLYGON_AMOY_FULL_IDENTIFIER ,
32
- contract : AMOY_TESTNET_CONTRACT_ADDRESS ,
33
- contract_creation_block : AMOY_TESTNET_CONTRACT_CREATION_BLOCK ,
48
+ contract : POLYGON_AMOY_TESTNET_CONTRACT_ADDRESS ,
49
+ contract_creation_block : POLYGON_AMOY_CONTRACT_CREATION_BLOCK ,
34
50
} ,
35
51
BlockchainRecord {
36
52
self_id : Chain :: EthRopsten ,
37
53
num_chain_id : 3 ,
38
54
literal_identifier : ETH_ROPSTEN_FULL_IDENTIFIER ,
39
- contract : ROPSTEN_TESTNET_CONTRACT_ADDRESS ,
40
- contract_creation_block : ROPSTEN_TESTNET_CONTRACT_CREATION_BLOCK ,
55
+ contract : ETH_ROPSTEN_TESTNET_CONTRACT_ADDRESS ,
56
+ contract_creation_block : ETH_ROPSTEN_CONTRACT_CREATION_BLOCK ,
41
57
} ,
42
58
BlockchainRecord {
43
59
self_id : Chain :: Dev ,
@@ -68,17 +84,27 @@ const ETH_MAINNET_CONTRACT_ADDRESS: Address = H160([
68
84
] ) ;
69
85
70
86
// $tMASQ (Amoy)
71
- const AMOY_TESTNET_CONTRACT_ADDRESS : Address = H160 ( [
87
+ const POLYGON_AMOY_TESTNET_CONTRACT_ADDRESS : Address = H160 ( [
72
88
0xd9 , 0x8c , 0x3e , 0xbd , 0x6b , 0x7f , 0x9b , 0x7c , 0xda , 0x24 , 0x49 , 0xec , 0xac , 0x00 , 0xd1 , 0xe5 ,
73
89
0xf4 , 0x7a , 0x81 , 0x93 ,
74
90
] ) ;
75
91
76
92
// SHRD (Ropsten)
77
- const ROPSTEN_TESTNET_CONTRACT_ADDRESS : Address = H160 ( [
93
+ const ETH_ROPSTEN_TESTNET_CONTRACT_ADDRESS : Address = H160 ( [
78
94
0x38 , 0x4d , 0xec , 0x25 , 0xe0 , 0x3f , 0x94 , 0x93 , 0x17 , 0x67 , 0xce , 0x4c , 0x35 , 0x56 , 0x16 , 0x84 ,
79
95
0x68 , 0xba , 0x24 , 0xc3 ,
80
96
] ) ;
81
97
98
+ const BASE_MAINNET_CONTRACT_ADDRESS : Address = H160 ( [
99
+ 0x45 , 0xD9 , 0xC1 , 0x01 , 0xa3 , 0x87 , 0x0C , 0xa5 , 0x02 , 0x45 , 0x82 , 0xfd , 0x78 , 0x8F , 0x4E , 0x1e ,
100
+ 0x8F , 0x79 , 0x71 , 0xc3 ,
101
+ ] ) ;
102
+
103
+ const BASE_SEPOLIA_TESTNET_CONTRACT_ADDRESS : Address = H160 ( [
104
+ 0x89 , 0x8e , 0x1c , 0xe7 , 0x20 , 0x08 , 0x4A , 0x90 , 0x2b , 0xc3 , 0x7d , 0xd8 , 0x22 , 0xed , 0x6d , 0x6a ,
105
+ 0x5f , 0x02 , 0x7e , 0x10 ,
106
+ ] ) ;
107
+
82
108
const MULTINODE_TESTNET_CONTRACT_ADDRESS : Address = H160 ( [
83
109
0x59 , 0x88 , 0x2e , 0x4a , 0x8f , 0x5d , 0x24 , 0x64 , 0x3d , 0x4d , 0xda , 0x42 , 0x29 , 0x22 , 0xa8 , 0x70 ,
84
110
0xf1 , 0xb3 , 0xe6 , 0x64 ,
@@ -88,20 +114,20 @@ const MULTINODE_TESTNET_CONTRACT_ADDRESS: Address = H160([
88
114
mod tests {
89
115
use super :: * ;
90
116
use crate :: blockchains:: chains:: chain_from_chain_identifier_opt;
91
- use crate :: constants:: {
92
- AMOY_TESTNET_CONTRACT_CREATION_BLOCK , POLYGON_MAINNET_CONTRACT_CREATION_BLOCK ,
93
- } ;
117
+ use crate :: constants:: BASE_MAINNET_CONTRACT_CREATION_BLOCK ;
94
118
use std:: collections:: HashSet ;
95
119
use std:: iter:: FromIterator ;
96
120
97
121
#[ test]
98
122
fn record_returns_correct_blockchain_record ( ) {
99
123
let test_array = [
100
124
assert_returns_correct_record ( Chain :: EthMainnet , 1 ) ,
101
- assert_returns_correct_record ( Chain :: Dev , 2 ) ,
102
125
assert_returns_correct_record ( Chain :: EthRopsten , 3 ) ,
103
126
assert_returns_correct_record ( Chain :: PolyMainnet , 137 ) ,
104
127
assert_returns_correct_record ( Chain :: PolyAmoy , 80002 ) ,
128
+ assert_returns_correct_record ( Chain :: BaseMainnet , 8453 ) ,
129
+ assert_returns_correct_record ( Chain :: BaseSepolia , 84532 ) ,
130
+ assert_returns_correct_record ( Chain :: Dev , 2 ) ,
105
131
] ;
106
132
assert_exhaustive ( & test_array)
107
133
}
@@ -118,6 +144,8 @@ mod tests {
118
144
assert_from_str ( Chain :: PolyAmoy ) ,
119
145
assert_from_str ( Chain :: EthMainnet ) ,
120
146
assert_from_str ( Chain :: EthRopsten ) ,
147
+ assert_from_str ( Chain :: BaseMainnet ) ,
148
+ assert_from_str ( Chain :: BaseSepolia ) ,
121
149
assert_from_str ( Chain :: Dev ) ,
122
150
] ;
123
151
assert_exhaustive ( & test_array)
@@ -137,18 +165,23 @@ mod tests {
137
165
#[ test]
138
166
fn chains_are_ordered_by_their_significance_for_users ( ) {
139
167
let test_array = [
140
- assert_chain_significance ( 0 , Chain :: PolyMainnet ) ,
141
- assert_chain_significance ( 1 , Chain :: EthMainnet ) ,
142
- assert_chain_significance ( 2 , Chain :: PolyAmoy ) ,
143
- assert_chain_significance ( 3 , Chain :: EthRopsten ) ,
144
- assert_chain_significance ( 4 , Chain :: Dev ) ,
168
+ Chain :: PolyMainnet ,
169
+ Chain :: EthMainnet ,
170
+ Chain :: BaseMainnet ,
171
+ Chain :: BaseSepolia ,
172
+ Chain :: PolyAmoy ,
173
+ Chain :: EthRopsten ,
174
+ Chain :: Dev ,
145
175
] ;
176
+ test_array
177
+ . iter ( )
178
+ . enumerate ( )
179
+ . for_each ( assert_chain_significance) ;
146
180
assert_exhaustive ( & test_array)
147
181
}
148
182
149
- fn assert_chain_significance ( idx : usize , chain : Chain ) -> Chain {
150
- assert_eq ! ( CHAINS [ idx] . self_id, chain, "Error at index {}" , idx) ;
151
- chain
183
+ fn assert_chain_significance ( ( idx, chain) : ( usize , & Chain ) ) {
184
+ assert_eq ! ( CHAINS [ idx] . self_id, * chain, "Error at index {}" , idx) ;
152
185
}
153
186
154
187
#[ test]
@@ -177,8 +210,8 @@ mod tests {
177
210
num_chain_id: 3 ,
178
211
self_id: examined_chain,
179
212
literal_identifier: "eth-ropsten" ,
180
- contract: ROPSTEN_TESTNET_CONTRACT_ADDRESS ,
181
- contract_creation_block: ROPSTEN_TESTNET_CONTRACT_CREATION_BLOCK ,
213
+ contract: ETH_ROPSTEN_TESTNET_CONTRACT_ADDRESS ,
214
+ contract_creation_block: ETH_ROPSTEN_CONTRACT_CREATION_BLOCK ,
182
215
}
183
216
) ;
184
217
}
@@ -209,8 +242,40 @@ mod tests {
209
242
num_chain_id: 80002 ,
210
243
self_id: examined_chain,
211
244
literal_identifier: "polygon-amoy" ,
212
- contract: AMOY_TESTNET_CONTRACT_ADDRESS ,
213
- contract_creation_block: AMOY_TESTNET_CONTRACT_CREATION_BLOCK ,
245
+ contract: POLYGON_AMOY_TESTNET_CONTRACT_ADDRESS ,
246
+ contract_creation_block: POLYGON_AMOY_CONTRACT_CREATION_BLOCK ,
247
+ }
248
+ ) ;
249
+ }
250
+
251
+ #[ test]
252
+ fn base_mainnet_record_is_properly_declared ( ) {
253
+ let examined_chain = Chain :: BaseMainnet ;
254
+ let chain_record = return_examined ( examined_chain) ;
255
+ assert_eq ! (
256
+ chain_record,
257
+ & BlockchainRecord {
258
+ num_chain_id: 8453 ,
259
+ self_id: examined_chain,
260
+ literal_identifier: "base-mainnet" ,
261
+ contract: BASE_MAINNET_CONTRACT_ADDRESS ,
262
+ contract_creation_block: BASE_MAINNET_CONTRACT_CREATION_BLOCK ,
263
+ }
264
+ ) ;
265
+ }
266
+
267
+ #[ test]
268
+ fn base_sepolia_record_is_properly_declared ( ) {
269
+ let examined_chain = Chain :: BaseSepolia ;
270
+ let chain_record = return_examined ( examined_chain) ;
271
+ assert_eq ! (
272
+ chain_record,
273
+ & BlockchainRecord {
274
+ num_chain_id: 84532 ,
275
+ self_id: examined_chain,
276
+ literal_identifier: "base-sepolia" ,
277
+ contract: BASE_SEPOLIA_TESTNET_CONTRACT_ADDRESS ,
278
+ contract_creation_block: BASE_SEPOLIA_CONTRACT_CREATION_BLOCK ,
214
279
}
215
280
) ;
216
281
}
@@ -226,7 +291,7 @@ mod tests {
226
291
self_id: examined_chain,
227
292
literal_identifier: "dev" ,
228
293
contract: MULTINODE_TESTNET_CONTRACT_ADDRESS ,
229
- contract_creation_block: 0 ,
294
+ contract_creation_block: MULTINODE_TESTNET_CONTRACT_CREATION_BLOCK ,
230
295
}
231
296
) ;
232
297
}
@@ -240,9 +305,11 @@ mod tests {
240
305
let test_array = [
241
306
assert_chain_from_chain_identifier_opt ( "eth-mainnet" , Some ( Chain :: EthMainnet ) ) ,
242
307
assert_chain_from_chain_identifier_opt ( "eth-ropsten" , Some ( Chain :: EthRopsten ) ) ,
243
- assert_chain_from_chain_identifier_opt ( "dev" , Some ( Chain :: Dev ) ) ,
244
308
assert_chain_from_chain_identifier_opt ( "polygon-mainnet" , Some ( Chain :: PolyMainnet ) ) ,
245
309
assert_chain_from_chain_identifier_opt ( "polygon-amoy" , Some ( Chain :: PolyAmoy ) ) ,
310
+ assert_chain_from_chain_identifier_opt ( "base-mainnet" , Some ( Chain :: BaseMainnet ) ) ,
311
+ assert_chain_from_chain_identifier_opt ( "base-sepolia" , Some ( Chain :: BaseSepolia ) ) ,
312
+ assert_chain_from_chain_identifier_opt ( "dev" , Some ( Chain :: Dev ) ) ,
246
313
] ;
247
314
assert_exhaustive ( & test_array)
248
315
}
0 commit comments