@@ -4,15 +4,6 @@ use thiserror::Error;
4
4
5
5
use crate :: { MagicId , StdResult } ;
6
6
7
- /// Mainnet magic ID
8
- pub const MAINNET_MAGIC_ID : MagicId = 764824073 ;
9
- /// Preprod magic ID
10
- pub const PREPROD_MAGIC_ID : MagicId = 1 ;
11
- /// Preview magic ID
12
- pub const PREVIEW_MAGIC_ID : MagicId = 2 ;
13
- /// Devnet magic ID
14
- pub ( crate ) const DEVNET_MAGIC_ID : MagicId = 42 ;
15
-
16
7
#[ derive( Error , Debug ) ]
17
8
pub enum CardanoNetworkError {
18
9
#[ error( "parse from code error: '{0}'" ) ]
@@ -31,16 +22,25 @@ pub enum CardanoNetwork {
31
22
}
32
23
33
24
impl CardanoNetwork {
25
+ /// Mainnet magic ID
26
+ pub const MAINNET_MAGIC_ID : MagicId = 764824073 ;
27
+ /// Preprod magic ID
28
+ pub const PREPROD_MAGIC_ID : MagicId = 1 ;
29
+ /// Preview magic ID
30
+ pub const PREVIEW_MAGIC_ID : MagicId = 2 ;
31
+ /// Devnet magic ID
32
+ pub ( crate ) const DEVNET_MAGIC_ID : MagicId = 42 ;
33
+
34
34
/// Instantiates a CardanoNetwork from its code and magic id
35
35
pub fn from_code (
36
36
network_code : String ,
37
37
network_magic : Option < u64 > ,
38
38
) -> Result < CardanoNetwork , CardanoNetworkError > {
39
39
match network_code. to_lowercase ( ) . as_str ( ) {
40
40
"mainnet" => Ok ( CardanoNetwork :: MainNet ) ,
41
- "preview" => Ok ( CardanoNetwork :: TestNet ( PREVIEW_MAGIC_ID ) ) ,
42
- "preprod" => Ok ( CardanoNetwork :: TestNet ( PREPROD_MAGIC_ID ) ) ,
43
- "devnet" => Ok ( CardanoNetwork :: TestNet ( DEVNET_MAGIC_ID ) ) ,
41
+ "preview" => Ok ( CardanoNetwork :: TestNet ( Self :: PREVIEW_MAGIC_ID ) ) ,
42
+ "preprod" => Ok ( CardanoNetwork :: TestNet ( Self :: PREPROD_MAGIC_ID ) ) ,
43
+ "devnet" => Ok ( CardanoNetwork :: TestNet ( Self :: DEVNET_MAGIC_ID ) ) ,
44
44
"private" => {
45
45
if let Some ( magic) = network_magic {
46
46
Ok ( CardanoNetwork :: TestNet ( magic) )
@@ -59,7 +59,7 @@ impl CardanoNetwork {
59
59
/// Returns the magic ID of the network
60
60
pub fn magic_id ( & self ) -> MagicId {
61
61
match * self {
62
- CardanoNetwork :: MainNet => MAINNET_MAGIC_ID ,
62
+ CardanoNetwork :: MainNet => Self :: MAINNET_MAGIC_ID ,
63
63
CardanoNetwork :: TestNet ( magic_id) => magic_id,
64
64
}
65
65
}
@@ -68,7 +68,7 @@ impl CardanoNetwork {
68
68
pub fn compute_allow_unparsable_block ( & self , allow_unparsable_block : bool ) -> StdResult < bool > {
69
69
let allow_unparsable_block = match self {
70
70
CardanoNetwork :: MainNet => false ,
71
- CardanoNetwork :: TestNet ( id) if * id == PREPROD_MAGIC_ID => false ,
71
+ CardanoNetwork :: TestNet ( id) if * id == Self :: PREPROD_MAGIC_ID => false ,
72
72
_ => allow_unparsable_block,
73
73
} ;
74
74
@@ -81,9 +81,9 @@ impl Display for CardanoNetwork {
81
81
match * self {
82
82
CardanoNetwork :: MainNet => write ! ( f, "mainnet" ) ,
83
83
CardanoNetwork :: TestNet ( magic_id) => match magic_id {
84
- PREVIEW_MAGIC_ID => write ! ( f, "preview" ) ,
85
- PREPROD_MAGIC_ID => write ! ( f, "preprod" ) ,
86
- DEVNET_MAGIC_ID => write ! ( f, "devnet" ) ,
84
+ Self :: PREVIEW_MAGIC_ID => write ! ( f, "preview" ) ,
85
+ Self :: PREPROD_MAGIC_ID => write ! ( f, "preprod" ) ,
86
+ Self :: DEVNET_MAGIC_ID => write ! ( f, "devnet" ) ,
87
87
_ => write ! ( f, "private" ) ,
88
88
} ,
89
89
}
@@ -105,7 +105,7 @@ impl From<&CardanoNetwork> for String {
105
105
impl From < MagicId > for CardanoNetwork {
106
106
fn from ( magic_id : MagicId ) -> Self {
107
107
match magic_id {
108
- MAINNET_MAGIC_ID => Self :: MainNet ,
108
+ Self :: MAINNET_MAGIC_ID => Self :: MainNet ,
109
109
_ => Self :: TestNet ( magic_id) ,
110
110
}
111
111
}
@@ -127,27 +127,27 @@ mod tests {
127
127
) ;
128
128
assert_eq ! (
129
129
CardanoNetwork :: from_code( "preview" . to_string( ) , None ) . unwrap( ) ,
130
- CardanoNetwork :: TestNet ( PREVIEW_MAGIC_ID )
130
+ CardanoNetwork :: TestNet ( CardanoNetwork :: PREVIEW_MAGIC_ID )
131
131
) ;
132
132
assert_eq ! (
133
133
CardanoNetwork :: from_code( "preview" . to_string( ) , Some ( 123 ) ) . unwrap( ) ,
134
- CardanoNetwork :: TestNet ( PREVIEW_MAGIC_ID )
134
+ CardanoNetwork :: TestNet ( CardanoNetwork :: PREVIEW_MAGIC_ID )
135
135
) ;
136
136
assert_eq ! (
137
137
CardanoNetwork :: from_code( "preprod" . to_string( ) , None ) . unwrap( ) ,
138
- CardanoNetwork :: TestNet ( PREPROD_MAGIC_ID )
138
+ CardanoNetwork :: TestNet ( CardanoNetwork :: PREPROD_MAGIC_ID )
139
139
) ;
140
140
assert_eq ! (
141
141
CardanoNetwork :: from_code( "preprod" . to_string( ) , Some ( 123 ) ) . unwrap( ) ,
142
- CardanoNetwork :: TestNet ( PREPROD_MAGIC_ID )
142
+ CardanoNetwork :: TestNet ( CardanoNetwork :: PREPROD_MAGIC_ID )
143
143
) ;
144
144
assert_eq ! (
145
145
CardanoNetwork :: from_code( "devnet" . to_string( ) , None ) . unwrap( ) ,
146
- CardanoNetwork :: TestNet ( DEVNET_MAGIC_ID )
146
+ CardanoNetwork :: TestNet ( CardanoNetwork :: DEVNET_MAGIC_ID )
147
147
) ;
148
148
assert_eq ! (
149
149
CardanoNetwork :: from_code( "devnet" . to_string( ) , Some ( 123 ) ) . unwrap( ) ,
150
- CardanoNetwork :: TestNet ( DEVNET_MAGIC_ID )
150
+ CardanoNetwork :: TestNet ( CardanoNetwork :: DEVNET_MAGIC_ID )
151
151
) ;
152
152
assert_eq ! (
153
153
CardanoNetwork :: from_code( "private" . to_string( ) , Some ( 123 ) ) . unwrap( ) ,
@@ -166,12 +166,12 @@ mod tests {
166
166
CardanoNetwork :: MainNet . compute_allow_unparsable_block ( true ) . unwrap ( ) ;
167
167
assert ! ( !allow_unparsable_block) ;
168
168
169
- let allow_unparsable_block = CardanoNetwork :: TestNet ( PREPROD_MAGIC_ID )
169
+ let allow_unparsable_block = CardanoNetwork :: TestNet ( CardanoNetwork :: PREPROD_MAGIC_ID )
170
170
. compute_allow_unparsable_block ( false )
171
171
. unwrap ( ) ;
172
172
assert ! ( !allow_unparsable_block) ;
173
173
174
- let allow_unparsable_block = CardanoNetwork :: TestNet ( PREPROD_MAGIC_ID )
174
+ let allow_unparsable_block = CardanoNetwork :: TestNet ( CardanoNetwork :: PREPROD_MAGIC_ID )
175
175
. compute_allow_unparsable_block ( true )
176
176
. unwrap ( ) ;
177
177
assert ! ( !allow_unparsable_block) ;
@@ -180,22 +180,22 @@ mod tests {
180
180
#[ test]
181
181
fn compute_allow_unparsable_block_should_return_value_passed_in_parameter_on_all_networks_other_than_mainnet_and_preprod ( )
182
182
{
183
- let allow_unparsable_block = CardanoNetwork :: TestNet ( PREVIEW_MAGIC_ID )
183
+ let allow_unparsable_block = CardanoNetwork :: TestNet ( CardanoNetwork :: PREVIEW_MAGIC_ID )
184
184
. compute_allow_unparsable_block ( false )
185
185
. unwrap ( ) ;
186
186
assert ! ( !allow_unparsable_block) ;
187
187
188
- let allow_unparsable_block = CardanoNetwork :: TestNet ( PREVIEW_MAGIC_ID )
188
+ let allow_unparsable_block = CardanoNetwork :: TestNet ( CardanoNetwork :: PREVIEW_MAGIC_ID )
189
189
. compute_allow_unparsable_block ( true )
190
190
. unwrap ( ) ;
191
191
assert ! ( allow_unparsable_block) ;
192
192
193
- let allow_unparsable_block = CardanoNetwork :: TestNet ( DEVNET_MAGIC_ID )
193
+ let allow_unparsable_block = CardanoNetwork :: TestNet ( CardanoNetwork :: DEVNET_MAGIC_ID )
194
194
. compute_allow_unparsable_block ( false )
195
195
. unwrap ( ) ;
196
196
assert ! ( !allow_unparsable_block) ;
197
197
198
- let allow_unparsable_block = CardanoNetwork :: TestNet ( DEVNET_MAGIC_ID )
198
+ let allow_unparsable_block = CardanoNetwork :: TestNet ( CardanoNetwork :: DEVNET_MAGIC_ID )
199
199
. compute_allow_unparsable_block ( true )
200
200
. unwrap ( ) ;
201
201
assert ! ( allow_unparsable_block) ;
@@ -220,9 +220,18 @@ mod tests {
220
220
}
221
221
222
222
assert_all_conversions_eq ( CardanoNetwork :: MainNet , "mainnet" ) ;
223
- assert_all_conversions_eq ( CardanoNetwork :: TestNet ( DEVNET_MAGIC_ID ) , "devnet" ) ;
224
- assert_all_conversions_eq ( CardanoNetwork :: TestNet ( PREVIEW_MAGIC_ID ) , "preview" ) ;
225
- assert_all_conversions_eq ( CardanoNetwork :: TestNet ( PREPROD_MAGIC_ID ) , "preprod" ) ;
223
+ assert_all_conversions_eq (
224
+ CardanoNetwork :: TestNet ( CardanoNetwork :: DEVNET_MAGIC_ID ) ,
225
+ "devnet" ,
226
+ ) ;
227
+ assert_all_conversions_eq (
228
+ CardanoNetwork :: TestNet ( CardanoNetwork :: PREVIEW_MAGIC_ID ) ,
229
+ "preview" ,
230
+ ) ;
231
+ assert_all_conversions_eq (
232
+ CardanoNetwork :: TestNet ( CardanoNetwork :: PREPROD_MAGIC_ID ) ,
233
+ "preprod" ,
234
+ ) ;
226
235
assert_all_conversions_eq ( CardanoNetwork :: TestNet ( 123456 ) , "private" ) ;
227
236
}
228
237
@@ -234,18 +243,21 @@ mod tests {
234
243
assert_eq ! ( network. magic_id( ) , magic_id) ;
235
244
}
236
245
237
- assert_magic_id_conversion_roundtrip ( MAINNET_MAGIC_ID , CardanoNetwork :: MainNet ) ;
238
246
assert_magic_id_conversion_roundtrip (
239
- PREVIEW_MAGIC_ID ,
240
- CardanoNetwork :: TestNet ( PREVIEW_MAGIC_ID ) ,
247
+ CardanoNetwork :: MAINNET_MAGIC_ID ,
248
+ CardanoNetwork :: MainNet ,
249
+ ) ;
250
+ assert_magic_id_conversion_roundtrip (
251
+ CardanoNetwork :: PREVIEW_MAGIC_ID ,
252
+ CardanoNetwork :: TestNet ( CardanoNetwork :: PREVIEW_MAGIC_ID ) ,
241
253
) ;
242
254
assert_magic_id_conversion_roundtrip (
243
- PREPROD_MAGIC_ID ,
244
- CardanoNetwork :: TestNet ( PREPROD_MAGIC_ID ) ,
255
+ CardanoNetwork :: PREPROD_MAGIC_ID ,
256
+ CardanoNetwork :: TestNet ( CardanoNetwork :: PREPROD_MAGIC_ID ) ,
245
257
) ;
246
258
assert_magic_id_conversion_roundtrip (
247
- DEVNET_MAGIC_ID ,
248
- CardanoNetwork :: TestNet ( DEVNET_MAGIC_ID ) ,
259
+ CardanoNetwork :: DEVNET_MAGIC_ID ,
260
+ CardanoNetwork :: TestNet ( CardanoNetwork :: DEVNET_MAGIC_ID ) ,
249
261
) ;
250
262
assert_magic_id_conversion_roundtrip ( 123456 , CardanoNetwork :: TestNet ( 123456 ) ) ;
251
263
}
0 commit comments