Files
reth/crates/optimism/chainspec/src/base.rs
2025-03-06 12:05:29 +00:00

41 lines
1.5 KiB
Rust

//! Chain specification for the Base Mainnet network.
use alloc::{sync::Arc, vec};
use alloy_chains::Chain;
use alloy_primitives::{b256, U256};
use reth_chainspec::{BaseFeeParams, BaseFeeParamsKind, ChainSpec};
use reth_ethereum_forks::{EthereumHardfork, Hardfork};
use reth_optimism_forks::{OpHardfork, BASE_MAINNET_HARDFORKS};
use reth_primitives_traits::SealedHeader;
use crate::{make_op_genesis_header, LazyLock, OpChainSpec};
/// The Base mainnet spec
pub static BASE_MAINNET: LazyLock<Arc<OpChainSpec>> = LazyLock::new(|| {
let genesis = serde_json::from_str(include_str!("../res/genesis/base.json"))
.expect("Can't deserialize Base genesis json");
let hardforks = BASE_MAINNET_HARDFORKS.clone();
OpChainSpec {
inner: ChainSpec {
chain: Chain::base_mainnet(),
genesis_header: SealedHeader::new(
make_op_genesis_header(&genesis, &hardforks),
b256!("0xf712aa9241cc24369b143cf6dce85f0902a9731e70d66818a3a5845b296c73dd"),
),
genesis,
paris_block_and_final_difficulty: Some((0, U256::from(0))),
hardforks,
base_fee_params: BaseFeeParamsKind::Variable(
vec![
(EthereumHardfork::London.boxed(), BaseFeeParams::optimism()),
(OpHardfork::Canyon.boxed(), BaseFeeParams::optimism_canyon()),
]
.into(),
),
..Default::default()
},
}
.into()
});