33use std:: sync:: { Arc , LazyLock } ;
44
55use alloy_chains:: Chain ;
6+ use alloy_primitives:: b256;
67use alloy_primitives:: U256 ;
78use reth_chainspec:: { BaseFeeParams , BaseFeeParamsKind , ChainHardforks , ChainSpec , ForkCondition } ;
89use reth_ethereum_forks:: EthereumHardfork ;
910use reth_ethereum_forks:: Hardfork ;
11+ use reth_optimism_chainspec:: make_op_genesis_header;
1012use reth_optimism_chainspec:: OpChainSpec ;
1113use reth_optimism_forks:: OpHardfork ;
14+ use reth_primitives_traits:: SealedHeader ;
1215
1316/// The Base mainnet spec
1417pub ( crate ) static FRAXTAL_TESTNET : LazyLock < Arc < OpChainSpec > > = LazyLock :: new ( || {
18+ let genesis = serde_json:: from_str ( include_str ! ( "../res/genesis/testnet.json" ) )
19+ . expect ( "Can't deserialize Fraxtal testnet genesis json" ) ;
20+ let hardforks = FRAXTAL_TESTNET_HARDFORKS . clone ( ) ;
1521 OpChainSpec {
1622 inner : ChainSpec {
1723 chain : Chain :: fraxtal_testnet ( ) ,
18- genesis : serde_json:: from_str ( include_str ! ( "../res/genesis/testnet.json" ) )
19- . expect ( "Can't deserialize Fraxtal testnet genesis json" ) ,
24+ genesis_header : SealedHeader :: new (
25+ make_op_genesis_header ( & genesis, & hardforks) ,
26+ b256 ! ( "0x910f5c4084b63fd860d0c2f9a04615115a5a991254700b39ba072290dbd77489" ) ,
27+ ) ,
28+ genesis,
2029 paris_block_and_final_difficulty : Some ( ( 0 , U256 :: from ( 0 ) ) ) ,
21- hardforks : ChainHardforks :: new ( vec ! [
22- ( EthereumHardfork :: Frontier . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
23- ( EthereumHardfork :: Homestead . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
24- ( EthereumHardfork :: Tangerine . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
25- (
26- EthereumHardfork :: SpuriousDragon . boxed( ) ,
27- ForkCondition :: Block ( 0 ) ,
28- ) ,
29- ( EthereumHardfork :: Byzantium . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
30- (
31- EthereumHardfork :: Constantinople . boxed( ) ,
32- ForkCondition :: Block ( 0 ) ,
33- ) ,
34- (
35- EthereumHardfork :: Petersburg . boxed( ) ,
36- ForkCondition :: Block ( 0 ) ,
37- ) ,
38- ( EthereumHardfork :: Istanbul . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
39- (
40- EthereumHardfork :: MuirGlacier . boxed( ) ,
41- ForkCondition :: Block ( 0 ) ,
42- ) ,
43- ( EthereumHardfork :: Berlin . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
44- ( EthereumHardfork :: London . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
45- (
46- EthereumHardfork :: ArrowGlacier . boxed( ) ,
47- ForkCondition :: Block ( 0 ) ,
48- ) ,
49- (
50- EthereumHardfork :: GrayGlacier . boxed( ) ,
51- ForkCondition :: Block ( 0 ) ,
52- ) ,
53- (
54- EthereumHardfork :: Paris . boxed( ) ,
55- ForkCondition :: TTD {
56- activation_block_number: 0 ,
57- fork_block: Some ( 0 ) ,
58- total_difficulty: U256 :: ZERO ,
59- } ,
60- ) ,
61- ( OpHardfork :: Bedrock . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
62- ( OpHardfork :: Regolith . boxed( ) , ForkCondition :: Timestamp ( 0 ) ) ,
63- (
64- EthereumHardfork :: Shanghai . boxed( ) ,
65- ForkCondition :: Timestamp ( 0 ) ,
66- ) ,
67- ( OpHardfork :: Canyon . boxed( ) , ForkCondition :: Timestamp ( 0 ) ) ,
68- (
69- EthereumHardfork :: Cancun . boxed( ) ,
70- ForkCondition :: Timestamp ( 1714186800 ) ,
71- ) ,
72- (
73- OpHardfork :: Ecotone . boxed( ) ,
74- ForkCondition :: Timestamp ( 1714186800 ) ,
75- ) ,
76- (
77- OpHardfork :: Fjord . boxed( ) ,
78- ForkCondition :: Timestamp ( 1730401200 ) ,
79- ) ,
80- (
81- OpHardfork :: Granite . boxed( ) ,
82- ForkCondition :: Timestamp ( 1738191600 ) ,
83- ) ,
84- (
85- OpHardfork :: Holocene . boxed( ) ,
86- ForkCondition :: Timestamp ( 1742583600 ) ,
87- ) ,
88- ] ) ,
30+ hardforks,
8931 base_fee_params : BaseFeeParamsKind :: Variable (
9032 vec ! [
9133 ( EthereumHardfork :: London . boxed( ) , BaseFeeParams :: optimism( ) ) ,
@@ -98,3 +40,74 @@ pub(crate) static FRAXTAL_TESTNET: LazyLock<Arc<OpChainSpec>> = LazyLock::new(||
9840 }
9941 . into ( )
10042} ) ;
43+
44+ static FRAXTAL_TESTNET_HARDFORKS : LazyLock < ChainHardforks > = LazyLock :: new ( || {
45+ ChainHardforks :: new ( vec ! [
46+ ( EthereumHardfork :: Frontier . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
47+ ( EthereumHardfork :: Homestead . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
48+ ( EthereumHardfork :: Tangerine . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
49+ (
50+ EthereumHardfork :: SpuriousDragon . boxed( ) ,
51+ ForkCondition :: Block ( 0 ) ,
52+ ) ,
53+ ( EthereumHardfork :: Byzantium . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
54+ (
55+ EthereumHardfork :: Constantinople . boxed( ) ,
56+ ForkCondition :: Block ( 0 ) ,
57+ ) ,
58+ (
59+ EthereumHardfork :: Petersburg . boxed( ) ,
60+ ForkCondition :: Block ( 0 ) ,
61+ ) ,
62+ ( EthereumHardfork :: Istanbul . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
63+ (
64+ EthereumHardfork :: MuirGlacier . boxed( ) ,
65+ ForkCondition :: Block ( 0 ) ,
66+ ) ,
67+ ( EthereumHardfork :: Berlin . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
68+ ( EthereumHardfork :: London . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
69+ (
70+ EthereumHardfork :: ArrowGlacier . boxed( ) ,
71+ ForkCondition :: Block ( 0 ) ,
72+ ) ,
73+ (
74+ EthereumHardfork :: GrayGlacier . boxed( ) ,
75+ ForkCondition :: Block ( 0 ) ,
76+ ) ,
77+ (
78+ EthereumHardfork :: Paris . boxed( ) ,
79+ ForkCondition :: TTD {
80+ activation_block_number: 0 ,
81+ fork_block: Some ( 0 ) ,
82+ total_difficulty: U256 :: ZERO ,
83+ } ,
84+ ) ,
85+ ( OpHardfork :: Bedrock . boxed( ) , ForkCondition :: Block ( 0 ) ) ,
86+ ( OpHardfork :: Regolith . boxed( ) , ForkCondition :: Timestamp ( 0 ) ) ,
87+ (
88+ EthereumHardfork :: Shanghai . boxed( ) ,
89+ ForkCondition :: Timestamp ( 0 ) ,
90+ ) ,
91+ ( OpHardfork :: Canyon . boxed( ) , ForkCondition :: Timestamp ( 0 ) ) ,
92+ (
93+ EthereumHardfork :: Cancun . boxed( ) ,
94+ ForkCondition :: Timestamp ( 1714186800 ) ,
95+ ) ,
96+ (
97+ OpHardfork :: Ecotone . boxed( ) ,
98+ ForkCondition :: Timestamp ( 1714186800 ) ,
99+ ) ,
100+ (
101+ OpHardfork :: Fjord . boxed( ) ,
102+ ForkCondition :: Timestamp ( 1730401200 ) ,
103+ ) ,
104+ (
105+ OpHardfork :: Granite . boxed( ) ,
106+ ForkCondition :: Timestamp ( 1738191600 ) ,
107+ ) ,
108+ (
109+ OpHardfork :: Holocene . boxed( ) ,
110+ ForkCondition :: Timestamp ( 1742583600 ) ,
111+ ) ,
112+ ] )
113+ } ) ;
0 commit comments