@@ -23,9 +23,11 @@ pub enum Chain {
2323 Holesky ,
2424 Sepolia ,
2525 Helder ,
26- Custom { genesis_time_secs : u64 , slot_time_secs : u64 , genesis_fork_version : [ u8 ; 4 ] } ,
26+ Custom { genesis_time_secs : u64 , slot_time_secs : u64 , genesis_fork_version : ForkVersion } ,
2727}
2828
29+ pub type ForkVersion = [ u8 ; 4 ] ;
30+
2931impl std:: fmt:: Debug for Chain {
3032 fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
3133 match self {
@@ -54,7 +56,7 @@ impl Chain {
5456 }
5557 }
5658
57- pub fn genesis_fork_version ( & self ) -> [ u8 ; 4 ] {
59+ pub fn genesis_fork_version ( & self ) -> ForkVersion {
5860 match self {
5961 Chain :: Mainnet => KnownChain :: Mainnet . genesis_fork_version ( ) ,
6062 Chain :: Holesky => KnownChain :: Holesky . genesis_fork_version ( ) ,
@@ -120,7 +122,7 @@ impl KnownChain {
120122 }
121123 }
122124
123- pub fn genesis_fork_version ( & self ) -> [ u8 ; 4 ] {
125+ pub fn genesis_fork_version ( & self ) -> ForkVersion {
124126 match self {
125127 KnownChain :: Mainnet => hex ! ( "00000000" ) ,
126128 KnownChain :: Holesky => hex ! ( "01017000" ) ,
@@ -216,7 +218,7 @@ impl<'de> Deserialize<'de> for Chain {
216218 Ok ( Chain :: Custom { genesis_time_secs, slot_time_secs, genesis_fork_version } )
217219 }
218220 ChainLoader :: Custom { genesis_time_secs, slot_time_secs, genesis_fork_version } => {
219- let genesis_fork_version: [ u8 ; 4 ] =
221+ let genesis_fork_version: ForkVersion =
220222 genesis_fork_version. as_ref ( ) . try_into ( ) . map_err ( serde:: de:: Error :: custom) ?;
221223 Ok ( Chain :: Custom { genesis_time_secs, slot_time_secs, genesis_fork_version } )
222224 }
@@ -230,7 +232,7 @@ impl<'de> Deserialize<'de> for Chain {
230232/// - JSON as return the getSpec endpoint, either with or without the `data`
231233/// field
232234/// - YAML as used e.g. in Kurtosis/Ethereum Package
233- pub fn load_chain_from_file ( path : PathBuf ) -> eyre:: Result < ( u64 , [ u8 ; 4 ] ) > {
235+ pub fn load_chain_from_file ( path : PathBuf ) -> eyre:: Result < ( u64 , ForkVersion ) > {
234236 #[ derive( Deserialize ) ]
235237 #[ serde( rename_all = "UPPERCASE" ) ]
236238 struct QuotedSpecFile {
@@ -240,8 +242,9 @@ pub fn load_chain_from_file(path: PathBuf) -> eyre::Result<(u64, [u8; 4])> {
240242 }
241243
242244 impl QuotedSpecFile {
243- fn to_chain ( & self ) -> eyre:: Result < ( u64 , [ u8 ; 4 ] ) > {
244- let genesis_fork_version: [ u8 ; 4 ] = self . genesis_fork_version . as_ref ( ) . try_into ( ) ?;
245+ fn to_chain ( & self ) -> eyre:: Result < ( u64 , ForkVersion ) > {
246+ let genesis_fork_version: ForkVersion =
247+ self . genesis_fork_version . as_ref ( ) . try_into ( ) ?;
245248 Ok ( ( self . seconds_per_slot , genesis_fork_version) )
246249 }
247250 }
@@ -259,8 +262,8 @@ pub fn load_chain_from_file(path: PathBuf) -> eyre::Result<(u64, [u8; 4])> {
259262 }
260263
261264 impl SpecFile {
262- fn to_chain ( & self ) -> ( u64 , [ u8 ; 4 ] ) {
263- let genesis_fork_version: [ u8 ; 4 ] = self . genesis_fork_version . to_be_bytes ( ) ;
265+ fn to_chain ( & self ) -> ( u64 , ForkVersion ) {
266+ let genesis_fork_version: ForkVersion = self . genesis_fork_version . to_be_bytes ( ) ;
264267 ( self . seconds_per_slot , genesis_fork_version)
265268 }
266269 }
@@ -315,11 +318,11 @@ mod tests {
315318 path. pop ( ) ;
316319 path. push ( "tests/data/mainnet_spec_data.json" ) ;
317320
318- let s = format ! ( "chain = {path:? }" ) ;
321+ let s = format ! ( "chain = {{ genesis_time_secs = 1, path = {path:?}} }" ) ;
319322
320323 let decoded: MockConfig = toml:: from_str ( & s) . unwrap ( ) ;
321324
322- // see fixme in load_chain_from_file
325+ assert_eq ! ( decoded . chain . genesis_time_sec ( ) , 1 ) ;
323326 assert_eq ! ( decoded. chain. slot_time_sec( ) , KnownChain :: Mainnet . slot_time_sec( ) ) ;
324327 assert_eq ! (
325328 decoded. chain. genesis_fork_version( ) ,
@@ -336,11 +339,11 @@ mod tests {
336339 path. pop ( ) ;
337340 path. push ( "tests/data/holesky_spec.json" ) ;
338341
339- let s = format ! ( "chain = {path:? }" ) ;
342+ let s = format ! ( "chain = {{ genesis_time_secs = 1, path = {path:?}} }" ) ;
340343
341344 let decoded: MockConfig = toml:: from_str ( & s) . unwrap ( ) ;
342345 assert_eq ! ( decoded. chain, Chain :: Custom {
343- genesis_time_secs: KnownChain :: Holesky . genesis_time_sec ( ) ,
346+ genesis_time_secs: 1 ,
344347 slot_time_secs: KnownChain :: Holesky . slot_time_sec( ) ,
345348 genesis_fork_version: KnownChain :: Holesky . genesis_fork_version( )
346349 } )
@@ -355,11 +358,11 @@ mod tests {
355358 path. pop ( ) ;
356359 path. push ( "tests/data/sepolia_spec_data.json" ) ;
357360
358- let s = format ! ( "chain = {path:? }" ) ;
361+ let s = format ! ( "chain = {{ genesis_time_secs = 1, path = {path:?}} }" ) ;
359362
360363 let decoded: MockConfig = toml:: from_str ( & s) . unwrap ( ) ;
361364 assert_eq ! ( decoded. chain, Chain :: Custom {
362- genesis_time_secs: KnownChain :: Sepolia . genesis_time_sec ( ) ,
365+ genesis_time_secs: 1 ,
363366 slot_time_secs: KnownChain :: Sepolia . slot_time_sec( ) ,
364367 genesis_fork_version: KnownChain :: Sepolia . genesis_fork_version( )
365368 } )
@@ -374,11 +377,11 @@ mod tests {
374377 path. pop ( ) ;
375378 path. push ( "tests/data/helder_spec.yml" ) ;
376379
377- let s = format ! ( "chain = {path:? }" ) ;
380+ let s = format ! ( "chain = {{ genesis_time_secs = 1, path = {path:?}} }" ) ;
378381
379382 let decoded: MockConfig = toml:: from_str ( & s) . unwrap ( ) ;
380383 assert_eq ! ( decoded. chain, Chain :: Custom {
381- genesis_time_secs: KnownChain :: Helder . genesis_time_sec ( ) ,
384+ genesis_time_secs: 1 ,
382385 slot_time_secs: KnownChain :: Helder . slot_time_sec( ) ,
383386 genesis_fork_version: KnownChain :: Helder . genesis_fork_version( )
384387 } )
0 commit comments