reth_optimism_chainspec/
base_sepolia.rs
1use alloc::{sync::Arc, vec};
4
5use alloy_chains::Chain;
6use alloy_primitives::{b256, U256};
7use reth_chainspec::{BaseFeeParams, BaseFeeParamsKind, ChainSpec, Hardfork};
8use reth_ethereum_forks::EthereumHardfork;
9use reth_optimism_forks::{OpHardfork, BASE_SEPOLIA_HARDFORKS};
10use reth_primitives_traits::SealedHeader;
11
12use crate::{make_op_genesis_header, LazyLock, OpChainSpec};
13
14pub static BASE_SEPOLIA: LazyLock<Arc<OpChainSpec>> = LazyLock::new(|| {
16 let genesis = serde_json::from_str(include_str!("../res/genesis/sepolia_base.json"))
17 .expect("Can't deserialize Base Sepolia genesis json");
18 let hardforks = BASE_SEPOLIA_HARDFORKS.clone();
19 OpChainSpec {
20 inner: ChainSpec {
21 chain: Chain::base_sepolia(),
22 genesis_header: SealedHeader::new(
23 make_op_genesis_header(&genesis, &hardforks),
24 b256!("0x0dcc9e089e30b90ddfc55be9a37dd15bc551aeee999d2e2b51414c54eaf934e4"),
25 ),
26 genesis,
27 paris_block_and_final_difficulty: Some((0, U256::from(0))),
28 hardforks,
29 base_fee_params: BaseFeeParamsKind::Variable(
30 vec![
31 (EthereumHardfork::London.boxed(), BaseFeeParams::base_sepolia()),
32 (OpHardfork::Canyon.boxed(), BaseFeeParams::base_sepolia_canyon()),
33 ]
34 .into(),
35 ),
36 prune_delete_limit: 10000,
37 ..Default::default()
38 },
39 }
40 .into()
41});