reth_optimism_chainspec/
dev.rs

1//! Chain specification in dev mode for custom chain.
2
3use alloc::sync::Arc;
4
5use alloy_chains::Chain;
6use alloy_primitives::U256;
7use reth_chainspec::{BaseFeeParams, BaseFeeParamsKind, ChainSpec};
8use reth_optimism_forks::DEV_HARDFORKS;
9use reth_primitives_traits::SealedHeader;
10
11use crate::{make_op_genesis_header, LazyLock, OpChainSpec};
12
13/// OP dev testnet specification
14///
15/// Includes 20 prefunded accounts with `10_000` ETH each derived from mnemonic "test test test test
16/// test test test test test test test junk".
17pub static OP_DEV: LazyLock<Arc<OpChainSpec>> = LazyLock::new(|| {
18    let genesis = serde_json::from_str(include_str!("../res/genesis/dev.json"))
19        .expect("Can't deserialize Dev testnet genesis json");
20    let hardforks = DEV_HARDFORKS.clone();
21    let genesis_header = SealedHeader::seal_slow(make_op_genesis_header(&genesis, &hardforks));
22    OpChainSpec {
23        inner: ChainSpec {
24            chain: Chain::dev(),
25            genesis_header,
26            genesis,
27            paris_block_and_final_difficulty: Some((0, U256::from(0))),
28            hardforks,
29            base_fee_params: BaseFeeParamsKind::Constant(BaseFeeParams::ethereum()),
30            deposit_contract: None, // TODO: do we even have?
31            ..Default::default()
32        },
33    }
34    .into()
35});