@@ -4,15 +4,6 @@ use thiserror::Error;
44
55use crate :: { MagicId , StdResult } ;
66
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-
167#[ derive( Error , Debug ) ]
178pub enum CardanoNetworkError {
189 #[ error( "parse from code error: '{0}'" ) ]
@@ -31,16 +22,25 @@ pub enum CardanoNetwork {
3122}
3223
3324impl 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+
3434 /// Instantiates a CardanoNetwork from its code and magic id
3535 pub fn from_code (
3636 network_code : String ,
3737 network_magic : Option < u64 > ,
3838 ) -> Result < CardanoNetwork , CardanoNetworkError > {
3939 match network_code. to_lowercase ( ) . as_str ( ) {
4040 "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 ) ) ,
4444 "private" => {
4545 if let Some ( magic) = network_magic {
4646 Ok ( CardanoNetwork :: TestNet ( magic) )
@@ -59,7 +59,7 @@ impl CardanoNetwork {
5959 /// Returns the magic ID of the network
6060 pub fn magic_id ( & self ) -> MagicId {
6161 match * self {
62- CardanoNetwork :: MainNet => MAINNET_MAGIC_ID ,
62+ CardanoNetwork :: MainNet => Self :: MAINNET_MAGIC_ID ,
6363 CardanoNetwork :: TestNet ( magic_id) => magic_id,
6464 }
6565 }
@@ -68,7 +68,7 @@ impl CardanoNetwork {
6868 pub fn compute_allow_unparsable_block ( & self , allow_unparsable_block : bool ) -> StdResult < bool > {
6969 let allow_unparsable_block = match self {
7070 CardanoNetwork :: MainNet => false ,
71- CardanoNetwork :: TestNet ( id) if * id == PREPROD_MAGIC_ID => false ,
71+ CardanoNetwork :: TestNet ( id) if * id == Self :: PREPROD_MAGIC_ID => false ,
7272 _ => allow_unparsable_block,
7373 } ;
7474
@@ -81,9 +81,9 @@ impl Display for CardanoNetwork {
8181 match * self {
8282 CardanoNetwork :: MainNet => write ! ( f, "mainnet" ) ,
8383 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" ) ,
8787 _ => write ! ( f, "private" ) ,
8888 } ,
8989 }
@@ -105,7 +105,7 @@ impl From<&CardanoNetwork> for String {
105105impl From < MagicId > for CardanoNetwork {
106106 fn from ( magic_id : MagicId ) -> Self {
107107 match magic_id {
108- MAINNET_MAGIC_ID => Self :: MainNet ,
108+ Self :: MAINNET_MAGIC_ID => Self :: MainNet ,
109109 _ => Self :: TestNet ( magic_id) ,
110110 }
111111 }
@@ -127,27 +127,27 @@ mod tests {
127127 ) ;
128128 assert_eq ! (
129129 CardanoNetwork :: from_code( "preview" . to_string( ) , None ) . unwrap( ) ,
130- CardanoNetwork :: TestNet ( PREVIEW_MAGIC_ID )
130+ CardanoNetwork :: TestNet ( CardanoNetwork :: PREVIEW_MAGIC_ID )
131131 ) ;
132132 assert_eq ! (
133133 CardanoNetwork :: from_code( "preview" . to_string( ) , Some ( 123 ) ) . unwrap( ) ,
134- CardanoNetwork :: TestNet ( PREVIEW_MAGIC_ID )
134+ CardanoNetwork :: TestNet ( CardanoNetwork :: PREVIEW_MAGIC_ID )
135135 ) ;
136136 assert_eq ! (
137137 CardanoNetwork :: from_code( "preprod" . to_string( ) , None ) . unwrap( ) ,
138- CardanoNetwork :: TestNet ( PREPROD_MAGIC_ID )
138+ CardanoNetwork :: TestNet ( CardanoNetwork :: PREPROD_MAGIC_ID )
139139 ) ;
140140 assert_eq ! (
141141 CardanoNetwork :: from_code( "preprod" . to_string( ) , Some ( 123 ) ) . unwrap( ) ,
142- CardanoNetwork :: TestNet ( PREPROD_MAGIC_ID )
142+ CardanoNetwork :: TestNet ( CardanoNetwork :: PREPROD_MAGIC_ID )
143143 ) ;
144144 assert_eq ! (
145145 CardanoNetwork :: from_code( "devnet" . to_string( ) , None ) . unwrap( ) ,
146- CardanoNetwork :: TestNet ( DEVNET_MAGIC_ID )
146+ CardanoNetwork :: TestNet ( CardanoNetwork :: DEVNET_MAGIC_ID )
147147 ) ;
148148 assert_eq ! (
149149 CardanoNetwork :: from_code( "devnet" . to_string( ) , Some ( 123 ) ) . unwrap( ) ,
150- CardanoNetwork :: TestNet ( DEVNET_MAGIC_ID )
150+ CardanoNetwork :: TestNet ( CardanoNetwork :: DEVNET_MAGIC_ID )
151151 ) ;
152152 assert_eq ! (
153153 CardanoNetwork :: from_code( "private" . to_string( ) , Some ( 123 ) ) . unwrap( ) ,
@@ -166,12 +166,12 @@ mod tests {
166166 CardanoNetwork :: MainNet . compute_allow_unparsable_block ( true ) . unwrap ( ) ;
167167 assert ! ( !allow_unparsable_block) ;
168168
169- let allow_unparsable_block = CardanoNetwork :: TestNet ( PREPROD_MAGIC_ID )
169+ let allow_unparsable_block = CardanoNetwork :: TestNet ( CardanoNetwork :: PREPROD_MAGIC_ID )
170170 . compute_allow_unparsable_block ( false )
171171 . unwrap ( ) ;
172172 assert ! ( !allow_unparsable_block) ;
173173
174- let allow_unparsable_block = CardanoNetwork :: TestNet ( PREPROD_MAGIC_ID )
174+ let allow_unparsable_block = CardanoNetwork :: TestNet ( CardanoNetwork :: PREPROD_MAGIC_ID )
175175 . compute_allow_unparsable_block ( true )
176176 . unwrap ( ) ;
177177 assert ! ( !allow_unparsable_block) ;
@@ -180,22 +180,22 @@ mod tests {
180180 #[ test]
181181 fn compute_allow_unparsable_block_should_return_value_passed_in_parameter_on_all_networks_other_than_mainnet_and_preprod ( )
182182 {
183- let allow_unparsable_block = CardanoNetwork :: TestNet ( PREVIEW_MAGIC_ID )
183+ let allow_unparsable_block = CardanoNetwork :: TestNet ( CardanoNetwork :: PREVIEW_MAGIC_ID )
184184 . compute_allow_unparsable_block ( false )
185185 . unwrap ( ) ;
186186 assert ! ( !allow_unparsable_block) ;
187187
188- let allow_unparsable_block = CardanoNetwork :: TestNet ( PREVIEW_MAGIC_ID )
188+ let allow_unparsable_block = CardanoNetwork :: TestNet ( CardanoNetwork :: PREVIEW_MAGIC_ID )
189189 . compute_allow_unparsable_block ( true )
190190 . unwrap ( ) ;
191191 assert ! ( allow_unparsable_block) ;
192192
193- let allow_unparsable_block = CardanoNetwork :: TestNet ( DEVNET_MAGIC_ID )
193+ let allow_unparsable_block = CardanoNetwork :: TestNet ( CardanoNetwork :: DEVNET_MAGIC_ID )
194194 . compute_allow_unparsable_block ( false )
195195 . unwrap ( ) ;
196196 assert ! ( !allow_unparsable_block) ;
197197
198- let allow_unparsable_block = CardanoNetwork :: TestNet ( DEVNET_MAGIC_ID )
198+ let allow_unparsable_block = CardanoNetwork :: TestNet ( CardanoNetwork :: DEVNET_MAGIC_ID )
199199 . compute_allow_unparsable_block ( true )
200200 . unwrap ( ) ;
201201 assert ! ( allow_unparsable_block) ;
@@ -220,9 +220,18 @@ mod tests {
220220 }
221221
222222 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+ ) ;
226235 assert_all_conversions_eq ( CardanoNetwork :: TestNet ( 123456 ) , "private" ) ;
227236 }
228237
@@ -234,18 +243,21 @@ mod tests {
234243 assert_eq ! ( network. magic_id( ) , magic_id) ;
235244 }
236245
237- assert_magic_id_conversion_roundtrip ( MAINNET_MAGIC_ID , CardanoNetwork :: MainNet ) ;
238246 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 ) ,
241253 ) ;
242254 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 ) ,
245257 ) ;
246258 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 ) ,
249261 ) ;
250262 assert_magic_id_conversion_roundtrip ( 123456 , CardanoNetwork :: TestNet ( 123456 ) ) ;
251263 }
0 commit comments