reth_optimism_chainspec/
op_sepolia.rs

1//! Chain specification for the Optimism Sepolia testnet network.
2
3use crate::{make_op_genesis_header, LazyLock, OpChainSpec};
4use alloc::{sync::Arc, vec};
5use alloy_chains::{Chain, NamedChain};
6use alloy_primitives::{b256, U256};
7use reth_chainspec::{BaseFeeParams, BaseFeeParamsKind, ChainSpec, Hardfork};
8use reth_ethereum_forks::EthereumHardfork;
9use reth_optimism_forks::{OpHardfork, OP_SEPOLIA_HARDFORKS};
10use reth_primitives_traits::SealedHeader;
11
12/// The OP Sepolia spec
13pub static OP_SEPOLIA: LazyLock<Arc<OpChainSpec>> = LazyLock::new(|| {
14    let genesis = serde_json::from_str(include_str!("../res/genesis/sepolia_op.json"))
15        .expect("Can't deserialize OP Sepolia genesis json");
16    let hardforks = OP_SEPOLIA_HARDFORKS.clone();
17    OpChainSpec {
18        inner: ChainSpec {
19            chain: Chain::from_named(NamedChain::OptimismSepolia),
20            genesis_header: SealedHeader::new(
21                make_op_genesis_header(&genesis, &hardforks),
22                b256!("0x102de6ffb001480cc9b8b548fd05c34cd4f46ae4aa91759393db90ea0409887d"),
23            ),
24            genesis,
25            paris_block_and_final_difficulty: Some((0, U256::from(0))),
26            hardforks,
27            base_fee_params: BaseFeeParamsKind::Variable(
28                vec![
29                    (EthereumHardfork::London.boxed(), BaseFeeParams::optimism_sepolia()),
30                    (OpHardfork::Canyon.boxed(), BaseFeeParams::optimism_sepolia_canyon()),
31                ]
32                .into(),
33            ),
34            prune_delete_limit: 10000,
35            ..Default::default()
36        },
37    }
38    .into()
39});