@@ -88,9 +88,19 @@ impl ScrollChainSpecBuilder {
88
88
self
89
89
}
90
90
91
+ /// Enable Archimedes at genesis
92
+ pub fn archimedes_activated ( mut self ) -> Self {
93
+ self . inner = self . inner . london_activated ( ) ;
94
+ self . inner = self
95
+ . inner
96
+ . with_fork ( reth_scroll_forks:: ScrollHardfork :: Archimedes , ForkCondition :: Block ( 0 ) ) ;
97
+ self
98
+ }
99
+
91
100
/// Enable Bernoulli at genesis
92
101
pub fn bernoulli_activated ( mut self ) -> Self {
93
- self . inner = self . inner . cancun_activated ( ) ;
102
+ self = self . archimedes_activated ( ) ;
103
+ self . inner = self . inner . with_fork ( EthereumHardfork :: Shanghai , ForkCondition :: Timestamp ( 0 ) ) ;
94
104
self . inner = self
95
105
. inner
96
106
. with_fork ( reth_scroll_forks:: ScrollHardfork :: Bernoulli , ForkCondition :: Block ( 0 ) ) ;
@@ -100,9 +110,8 @@ impl ScrollChainSpecBuilder {
100
110
/// Enable Curie at genesis
101
111
pub fn curie_activated ( mut self ) -> Self {
102
112
self = self . bernoulli_activated ( ) ;
103
- self . inner = self
104
- . inner
105
- . with_fork ( reth_scroll_forks:: ScrollHardfork :: Curie , ForkCondition :: Timestamp ( 0 ) ) ;
113
+ self . inner =
114
+ self . inner . with_fork ( reth_scroll_forks:: ScrollHardfork :: Curie , ForkCondition :: Block ( 0 ) ) ;
106
115
self
107
116
}
108
117
@@ -312,147 +321,156 @@ impl ScrollConfigInfo {
312
321
mod tests {
313
322
use crate :: * ;
314
323
use alloy_genesis:: { ChainConfig , Genesis } ;
315
- use reth_ethereum_forks:: EthereumHardfork ;
324
+ use alloy_primitives:: b256;
325
+ use reth_chainspec:: test_fork_ids;
326
+ use reth_ethereum_forks:: { EthereumHardfork , ForkHash } ;
316
327
use reth_scroll_forks:: ScrollHardfork ;
317
328
318
- // #[test]
319
- // fn scroll_mainnet_forkids() {
320
- // let scroll_mainnet = ScrollChainSpecBuilder::scroll_mainnet().build();
321
- // let _ =
322
- // scroll_mainnet.genesis_hash.set(SCROLL_MAINNET.genesis_hash.get().copied().unwrap());
323
- // test_fork_ids(
324
- // &SCROLL_MAINNET,
325
- // &[
326
- // (
327
- // Head { number: 0, ..Default::default() },
328
- // ForkId { hash: ForkHash([0x67, 0xda, 0x02, 0x60]), next: 1704992401 },
329
- // ),
330
- // (
331
- // Head { number: 0, timestamp: 1704992400, ..Default::default() },
332
- // ForkId { hash: ForkHash([0x67, 0xda, 0x02, 0x60]), next: 1704992401 },
333
- // ),
334
- // (
335
- // Head { number: 0, timestamp: 1704992401, ..Default::default() },
336
- // ForkId { hash: ForkHash([0x3c, 0x28, 0x3c, 0xb3]), next: 1710374401 },
337
- // ),
338
- // (
339
- // Head { number: 0, timestamp: 1710374400, ..Default::default() },
340
- // ForkId { hash: ForkHash([0x3c, 0x28, 0x3c, 0xb3]), next: 1710374401 },
341
- // ),
342
- // (
343
- // Head { number: 0, timestamp: 1710374401, ..Default::default() },
344
- // ForkId { hash: ForkHash([0x51, 0xcc, 0x98, 0xb3]), next: 1720627201 },
345
- // ),
346
- // (
347
- // Head { number: 0, timestamp: 1720627200, ..Default::default() },
348
- // ForkId { hash: ForkHash([0x51, 0xcc, 0x98, 0xb3]), next: 1720627201 },
349
- // ),
350
- // (
351
- // Head { number: 0, timestamp: 1720627201, ..Default::default() },
352
- // ForkId { hash: ForkHash([0xe4, 0x01, 0x0e, 0xb9]), next: 1726070401 },
353
- // ),
354
- // (
355
- // Head { number: 0, timestamp: 1726070401, ..Default::default() },
356
- // ForkId { hash: ForkHash([0xbc, 0x38, 0xf9, 0xca]), next: 0 },
357
- // ),
358
- // ],
359
- // );
360
- // }
361
- //
362
- // #[test]
363
- // fn scroll_sepolia_forkids() {
364
- // test_fork_ids(
365
- // &SCROLL_SEPOLIA,
366
- // &[
367
- // (
368
- // Head { number: 0, ..Default::default() },
369
- // ForkId { hash: ForkHash([0x67, 0xa4, 0x03, 0x28]), next: 1699981200 },
370
- // ),
371
- // (
372
- // Head { number: 0, timestamp: 1699981199, ..Default::default() },
373
- // ForkId { hash: ForkHash([0x67, 0xa4, 0x03, 0x28]), next: 1699981200 },
374
- // ),
375
- // (
376
- // Head { number: 0, timestamp: 1699981200, ..Default::default() },
377
- // ForkId { hash: ForkHash([0xa4, 0x8d, 0x6a, 0x00]), next: 1708534800 },
378
- // ),
379
- // (
380
- // Head { number: 0, timestamp: 1708534799, ..Default::default() },
381
- // ForkId { hash: ForkHash([0xa4, 0x8d, 0x6a, 0x00]), next: 1708534800 },
382
- // ),
383
- // (
384
- // Head { number: 0, timestamp: 1708534800, ..Default::default() },
385
- // ForkId { hash: ForkHash([0xcc, 0x17, 0xc7, 0xeb]), next: 1716998400 },
386
- // ),
387
- // (
388
- // Head { number: 0, timestamp: 1716998399, ..Default::default() },
389
- // ForkId { hash: ForkHash([0xcc, 0x17, 0xc7, 0xeb]), next: 1716998400 },
390
- // ),
391
- // (
392
- // Head { number: 0, timestamp: 1716998400, ..Default::default() },
393
- // ForkId { hash: ForkHash([0x54, 0x0a, 0x8c, 0x5d]), next: 1723478400 },
394
- // ),
395
- // (
396
- // Head { number: 0, timestamp: 1723478399, ..Default::default() },
397
- // ForkId { hash: ForkHash([0x54, 0x0a, 0x8c, 0x5d]), next: 1723478400 },
398
- // ),
399
- // (
400
- // Head { number: 0, timestamp: 1723478400, ..Default::default() },
401
- // ForkId { hash: ForkHash([0x75, 0xde, 0xa4, 0x1e]), next: 1732633200 },
402
- // ),
403
- // (
404
- // Head { number: 0, timestamp: 1732633200, ..Default::default() },
405
- // ForkId { hash: ForkHash([0x4a, 0x1c, 0x79, 0x2e]), next: 0 },
406
- // ),
407
- // ],
408
- // );
409
- // }
410
-
411
- // #[test]
412
- // fn scroll_mainnet_genesis() {
413
- // let genesis = SCROLL_MAINNET.genesis_header();
414
- // println!("{:?}", genesis);
415
- // assert_eq!(
416
- // genesis.hash_slow(),
417
- // b256!("bbc05efd412b7cd47a2ed0e5ddfcf87af251e414ea4c801d78b6784513180a80")
418
- // );
419
- // let base_fee = genesis
420
- // .next_block_base_fee(SCROLL_MAINNET.base_fee_params_at_timestamp(genesis.timestamp))
421
- // .unwrap();
422
- // // <https://scrollscan.com/block/1>
423
- // assert_eq!(base_fee, 980000000);
424
- // }
425
-
426
- // #[test]
427
- // fn scroll_sepolia_genesis() {
428
- // let genesis = SCROLL_SEPOLIA.genesis_header();
429
- // assert_eq!(
430
- // genesis.hash_slow(),
431
- // b256!("aa62d1a8b2bffa9e5d2368b63aae0d98d54928bd713125e3fd9e5c896c68592c")
432
- // );
433
- // let base_fee = genesis
434
- // .next_block_base_fee(SCROLL_SEPOLIA.base_fee_params_at_timestamp(genesis.timestamp))
435
- // .unwrap();
436
- // // <https://base-sepolia.blockscout.com/block/1>
437
- // assert_eq!(base_fee, 980000000);
438
- // }
439
- // #[test]
440
- // fn latest_scroll_mainnet_fork_id() {
441
- // let a = SCROLL_MAINNET.latest_fork_id();
442
- // assert_eq!(
443
- // ForkId { hash: ForkHash([0xbc, 0x38, 0xf9, 0xca]), next: 0 },
444
- // SCROLL_MAINNET.latest_fork_id()
445
- // )
446
- // }
447
- //
448
- // #[test]
449
- // fn latest_scroll_mainnet_fork_id_with_builder() {
450
- // let scroll_mainnet = ScrollChainSpecBuilder::scroll_mainnet().build();
451
- // assert_eq!(
452
- // ForkId { hash: ForkHash([0xbc, 0x38, 0xf9, 0xca]), next: 0 },
453
- // scroll_mainnet.latest_fork_id()
454
- // )
455
- // }
329
+ #[ ignore = "waiting on https://github.com/scroll-tech/reth/pull/36" ]
330
+ #[ test]
331
+ fn scroll_mainnet_forkids ( ) {
332
+ let scroll_mainnet = ScrollChainSpecBuilder :: scroll_mainnet ( ) . build ( ) ;
333
+ let _ =
334
+ scroll_mainnet. genesis_hash . set ( SCROLL_MAINNET . genesis_hash . get ( ) . copied ( ) . unwrap ( ) ) ;
335
+ test_fork_ids (
336
+ & SCROLL_MAINNET ,
337
+ & [
338
+ (
339
+ Head { number : 0 , ..Default :: default ( ) } ,
340
+ ForkId { hash : ForkHash ( [ 0x67 , 0xda , 0x02 , 0x60 ] ) , next : 1704992401 } ,
341
+ ) ,
342
+ (
343
+ Head { number : 0 , timestamp : 1704992400 , ..Default :: default ( ) } ,
344
+ ForkId { hash : ForkHash ( [ 0x67 , 0xda , 0x02 , 0x60 ] ) , next : 1704992401 } ,
345
+ ) ,
346
+ (
347
+ Head { number : 0 , timestamp : 1704992401 , ..Default :: default ( ) } ,
348
+ ForkId { hash : ForkHash ( [ 0x3c , 0x28 , 0x3c , 0xb3 ] ) , next : 1710374401 } ,
349
+ ) ,
350
+ (
351
+ Head { number : 0 , timestamp : 1710374400 , ..Default :: default ( ) } ,
352
+ ForkId { hash : ForkHash ( [ 0x3c , 0x28 , 0x3c , 0xb3 ] ) , next : 1710374401 } ,
353
+ ) ,
354
+ (
355
+ Head { number : 0 , timestamp : 1710374401 , ..Default :: default ( ) } ,
356
+ ForkId { hash : ForkHash ( [ 0x51 , 0xcc , 0x98 , 0xb3 ] ) , next : 1720627201 } ,
357
+ ) ,
358
+ (
359
+ Head { number : 0 , timestamp : 1720627200 , ..Default :: default ( ) } ,
360
+ ForkId { hash : ForkHash ( [ 0x51 , 0xcc , 0x98 , 0xb3 ] ) , next : 1720627201 } ,
361
+ ) ,
362
+ (
363
+ Head { number : 0 , timestamp : 1720627201 , ..Default :: default ( ) } ,
364
+ ForkId { hash : ForkHash ( [ 0xe4 , 0x01 , 0x0e , 0xb9 ] ) , next : 1726070401 } ,
365
+ ) ,
366
+ (
367
+ Head { number : 0 , timestamp : 1726070401 , ..Default :: default ( ) } ,
368
+ ForkId { hash : ForkHash ( [ 0xbc , 0x38 , 0xf9 , 0xca ] ) , next : 0 } ,
369
+ ) ,
370
+ ] ,
371
+ ) ;
372
+ }
373
+
374
+ #[ ignore = "waiting on https://github.com/scroll-tech/reth/pull/36" ]
375
+ #[ test]
376
+ fn scroll_sepolia_forkids ( ) {
377
+ test_fork_ids (
378
+ & SCROLL_SEPOLIA ,
379
+ & [
380
+ (
381
+ Head { number : 0 , ..Default :: default ( ) } ,
382
+ ForkId { hash : ForkHash ( [ 0x67 , 0xa4 , 0x03 , 0x28 ] ) , next : 1699981200 } ,
383
+ ) ,
384
+ (
385
+ Head { number : 0 , timestamp : 1699981199 , ..Default :: default ( ) } ,
386
+ ForkId { hash : ForkHash ( [ 0x67 , 0xa4 , 0x03 , 0x28 ] ) , next : 1699981200 } ,
387
+ ) ,
388
+ (
389
+ Head { number : 0 , timestamp : 1699981200 , ..Default :: default ( ) } ,
390
+ ForkId { hash : ForkHash ( [ 0xa4 , 0x8d , 0x6a , 0x00 ] ) , next : 1708534800 } ,
391
+ ) ,
392
+ (
393
+ Head { number : 0 , timestamp : 1708534799 , ..Default :: default ( ) } ,
394
+ ForkId { hash : ForkHash ( [ 0xa4 , 0x8d , 0x6a , 0x00 ] ) , next : 1708534800 } ,
395
+ ) ,
396
+ (
397
+ Head { number : 0 , timestamp : 1708534800 , ..Default :: default ( ) } ,
398
+ ForkId { hash : ForkHash ( [ 0xcc , 0x17 , 0xc7 , 0xeb ] ) , next : 1716998400 } ,
399
+ ) ,
400
+ (
401
+ Head { number : 0 , timestamp : 1716998399 , ..Default :: default ( ) } ,
402
+ ForkId { hash : ForkHash ( [ 0xcc , 0x17 , 0xc7 , 0xeb ] ) , next : 1716998400 } ,
403
+ ) ,
404
+ (
405
+ Head { number : 0 , timestamp : 1716998400 , ..Default :: default ( ) } ,
406
+ ForkId { hash : ForkHash ( [ 0x54 , 0x0a , 0x8c , 0x5d ] ) , next : 1723478400 } ,
407
+ ) ,
408
+ (
409
+ Head { number : 0 , timestamp : 1723478399 , ..Default :: default ( ) } ,
410
+ ForkId { hash : ForkHash ( [ 0x54 , 0x0a , 0x8c , 0x5d ] ) , next : 1723478400 } ,
411
+ ) ,
412
+ (
413
+ Head { number : 0 , timestamp : 1723478400 , ..Default :: default ( ) } ,
414
+ ForkId { hash : ForkHash ( [ 0x75 , 0xde , 0xa4 , 0x1e ] ) , next : 1732633200 } ,
415
+ ) ,
416
+ (
417
+ Head { number : 0 , timestamp : 1732633200 , ..Default :: default ( ) } ,
418
+ ForkId { hash : ForkHash ( [ 0x4a , 0x1c , 0x79 , 0x2e ] ) , next : 0 } ,
419
+ ) ,
420
+ ] ,
421
+ ) ;
422
+ }
423
+
424
+ #[ ignore = "waiting on https://github.com/scroll-tech/reth/pull/36" ]
425
+ #[ test]
426
+ fn scroll_mainnet_genesis ( ) {
427
+ let genesis = SCROLL_MAINNET . genesis_header ( ) ;
428
+ println ! ( "{:?}" , genesis) ;
429
+ assert_eq ! (
430
+ genesis. hash_slow( ) ,
431
+ b256!( "bbc05efd412b7cd47a2ed0e5ddfcf87af251e414ea4c801d78b6784513180a80" )
432
+ ) ;
433
+ let base_fee = genesis
434
+ . next_block_base_fee ( SCROLL_MAINNET . base_fee_params_at_timestamp ( genesis. timestamp ) )
435
+ . unwrap ( ) ;
436
+ // <https://scrollscan.com/block/1>
437
+ assert_eq ! ( base_fee, 980000000 ) ;
438
+ }
439
+
440
+ #[ ignore = "waiting on https://github.com/scroll-tech/reth/pull/36" ]
441
+ #[ test]
442
+ fn scroll_sepolia_genesis ( ) {
443
+ let genesis = SCROLL_SEPOLIA . genesis_header ( ) ;
444
+ assert_eq ! (
445
+ genesis. hash_slow( ) ,
446
+ b256!( "aa62d1a8b2bffa9e5d2368b63aae0d98d54928bd713125e3fd9e5c896c68592c" )
447
+ ) ;
448
+ let base_fee = genesis
449
+ . next_block_base_fee ( SCROLL_SEPOLIA . base_fee_params_at_timestamp ( genesis. timestamp ) )
450
+ . unwrap ( ) ;
451
+ // <https://base-sepolia.blockscout.com/block/1>
452
+ assert_eq ! ( base_fee, 980000000 ) ;
453
+ }
454
+
455
+ #[ ignore = "waiting on https://github.com/scroll-tech/reth/pull/36" ]
456
+ #[ test]
457
+ fn latest_scroll_mainnet_fork_id ( ) {
458
+ assert_eq ! (
459
+ ForkId { hash: ForkHash ( [ 0xbc , 0x38 , 0xf9 , 0xca ] ) , next: 0 } ,
460
+ SCROLL_MAINNET . latest_fork_id( )
461
+ )
462
+ }
463
+
464
+ #[ ignore = "waiting on https://github.com/scroll-tech/reth/pull/36" ]
465
+ #[ test]
466
+ fn latest_scroll_mainnet_fork_id_with_builder ( ) {
467
+ let scroll_mainnet = ScrollChainSpecBuilder :: scroll_mainnet ( ) . build ( ) ;
468
+ assert_eq ! (
469
+ ForkId { hash: ForkHash ( [ 0xbc , 0x38 , 0xf9 , 0xca ] ) , next: 0 } ,
470
+ scroll_mainnet. latest_fork_id( )
471
+ )
472
+ }
473
+
456
474
#[ test]
457
475
fn is_bernoulli_active ( ) {
458
476
let scroll_mainnet = ScrollChainSpecBuilder :: scroll_mainnet ( ) . build ( ) ;
0 commit comments