mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
feat: use SealedHeader in ChainSpec (#14514)
This commit is contained in:
@ -4,24 +4,28 @@ use alloc::{sync::Arc, vec};
|
||||
|
||||
use alloy_chains::Chain;
|
||||
use alloy_primitives::{b256, U256};
|
||||
use reth_chainspec::{once_cell_set, BaseFeeParams, BaseFeeParamsKind, ChainSpec};
|
||||
use reth_chainspec::{make_genesis_header, BaseFeeParams, BaseFeeParamsKind, ChainSpec};
|
||||
use reth_ethereum_forks::{EthereumHardfork, Hardfork};
|
||||
use reth_optimism_forks::OpHardfork;
|
||||
use reth_primitives_traits::SealedHeader;
|
||||
|
||||
use crate::{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 = OpHardfork::base_mainnet();
|
||||
OpChainSpec {
|
||||
inner: ChainSpec {
|
||||
chain: Chain::base_mainnet(),
|
||||
genesis: serde_json::from_str(include_str!("../res/genesis/base.json"))
|
||||
.expect("Can't deserialize Base genesis json"),
|
||||
genesis_hash: once_cell_set(b256!(
|
||||
"f712aa9241cc24369b143cf6dce85f0902a9731e70d66818a3a5845b296c73dd"
|
||||
)),
|
||||
genesis_header: SealedHeader::new(
|
||||
make_genesis_header(&genesis, &hardforks),
|
||||
b256!("f712aa9241cc24369b143cf6dce85f0902a9731e70d66818a3a5845b296c73dd"),
|
||||
),
|
||||
genesis,
|
||||
paris_block_and_final_difficulty: Some((0, U256::from(0))),
|
||||
hardforks: OpHardfork::base_mainnet(),
|
||||
hardforks,
|
||||
base_fee_params: BaseFeeParamsKind::Variable(
|
||||
vec![
|
||||
(EthereumHardfork::London.boxed(), BaseFeeParams::optimism()),
|
||||
|
||||
@ -4,24 +4,28 @@ use alloc::{sync::Arc, vec};
|
||||
|
||||
use alloy_chains::Chain;
|
||||
use alloy_primitives::{b256, U256};
|
||||
use reth_chainspec::{once_cell_set, BaseFeeParams, BaseFeeParamsKind, ChainSpec, Hardfork};
|
||||
use reth_chainspec::{make_genesis_header, BaseFeeParams, BaseFeeParamsKind, ChainSpec, Hardfork};
|
||||
use reth_ethereum_forks::EthereumHardfork;
|
||||
use reth_optimism_forks::OpHardfork;
|
||||
use reth_primitives_traits::SealedHeader;
|
||||
|
||||
use crate::{LazyLock, OpChainSpec};
|
||||
|
||||
/// The Base Sepolia spec
|
||||
pub static BASE_SEPOLIA: LazyLock<Arc<OpChainSpec>> = LazyLock::new(|| {
|
||||
let genesis = serde_json::from_str(include_str!("../res/genesis/sepolia_base.json"))
|
||||
.expect("Can't deserialize Base Sepolia genesis json");
|
||||
let hardforks = OpHardfork::base_sepolia();
|
||||
OpChainSpec {
|
||||
inner: ChainSpec {
|
||||
chain: Chain::base_sepolia(),
|
||||
genesis: serde_json::from_str(include_str!("../res/genesis/sepolia_base.json"))
|
||||
.expect("Can't deserialize Base Sepolia genesis json"),
|
||||
genesis_hash: once_cell_set(b256!(
|
||||
"0dcc9e089e30b90ddfc55be9a37dd15bc551aeee999d2e2b51414c54eaf934e4"
|
||||
)),
|
||||
genesis_header: SealedHeader::new(
|
||||
make_genesis_header(&genesis, &hardforks),
|
||||
b256!("0dcc9e089e30b90ddfc55be9a37dd15bc551aeee999d2e2b51414c54eaf934e4"),
|
||||
),
|
||||
genesis,
|
||||
paris_block_and_final_difficulty: Some((0, U256::from(0))),
|
||||
hardforks: OpHardfork::base_sepolia(),
|
||||
hardforks,
|
||||
base_fee_params: BaseFeeParamsKind::Variable(
|
||||
vec![
|
||||
(EthereumHardfork::London.boxed(), BaseFeeParams::base_sepolia()),
|
||||
|
||||
@ -5,8 +5,9 @@ use alloc::sync::Arc;
|
||||
use alloy_chains::Chain;
|
||||
use alloy_consensus::constants::DEV_GENESIS_HASH;
|
||||
use alloy_primitives::U256;
|
||||
use reth_chainspec::{once_cell_set, BaseFeeParams, BaseFeeParamsKind, ChainSpec};
|
||||
use reth_chainspec::{make_genesis_header, BaseFeeParams, BaseFeeParamsKind, ChainSpec};
|
||||
use reth_optimism_forks::DEV_HARDFORKS;
|
||||
use reth_primitives_traits::SealedHeader;
|
||||
|
||||
use crate::{LazyLock, OpChainSpec};
|
||||
|
||||
@ -15,14 +16,19 @@ use crate::{LazyLock, OpChainSpec};
|
||||
/// Includes 20 prefunded accounts with `10_000` ETH each derived from mnemonic "test test test test
|
||||
/// test test test test test test test junk".
|
||||
pub static OP_DEV: LazyLock<Arc<OpChainSpec>> = LazyLock::new(|| {
|
||||
let genesis = serde_json::from_str(include_str!("../res/genesis/dev.json"))
|
||||
.expect("Can't deserialize Dev testnet genesis json");
|
||||
let hardforks = DEV_HARDFORKS.clone();
|
||||
OpChainSpec {
|
||||
inner: ChainSpec {
|
||||
chain: Chain::dev(),
|
||||
genesis: serde_json::from_str(include_str!("../res/genesis/dev.json"))
|
||||
.expect("Can't deserialize Dev testnet genesis json"),
|
||||
genesis_hash: once_cell_set(DEV_GENESIS_HASH),
|
||||
genesis_header: SealedHeader::new(
|
||||
make_genesis_header(&genesis, &hardforks),
|
||||
DEV_GENESIS_HASH,
|
||||
),
|
||||
genesis,
|
||||
paris_block_and_final_difficulty: Some((0, U256::from(0))),
|
||||
hardforks: DEV_HARDFORKS.clone(),
|
||||
hardforks,
|
||||
base_fee_params: BaseFeeParamsKind::Constant(BaseFeeParams::ethereum()),
|
||||
deposit_contract: None, // TODO: do we even have?
|
||||
..Default::default()
|
||||
|
||||
@ -443,8 +443,8 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn base_mainnet_forkids() {
|
||||
let base_mainnet = OpChainSpecBuilder::base_mainnet().build();
|
||||
let _ = base_mainnet.genesis_hash.set(BASE_MAINNET.genesis_hash.get().copied().unwrap());
|
||||
let mut base_mainnet = OpChainSpecBuilder::base_mainnet().build();
|
||||
base_mainnet.inner.genesis_header.set_hash(BASE_MAINNET.genesis_hash());
|
||||
test_fork_ids(
|
||||
&BASE_MAINNET,
|
||||
&[
|
||||
@ -539,10 +539,10 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn op_mainnet_forkids() {
|
||||
let op_mainnet = OpChainSpecBuilder::optimism_mainnet().build();
|
||||
let mut op_mainnet = OpChainSpecBuilder::optimism_mainnet().build();
|
||||
// for OP mainnet we have to do this because the genesis header can't be properly computed
|
||||
// from the genesis.json file
|
||||
let _ = op_mainnet.genesis_hash.set(OP_MAINNET.genesis_hash());
|
||||
op_mainnet.inner.genesis_header.set_hash(OP_MAINNET.genesis_hash());
|
||||
test_fork_ids(
|
||||
&op_mainnet,
|
||||
&[
|
||||
|
||||
@ -4,24 +4,28 @@ use crate::{LazyLock, OpChainSpec};
|
||||
use alloc::{sync::Arc, vec};
|
||||
use alloy_chains::Chain;
|
||||
use alloy_primitives::{b256, U256};
|
||||
use reth_chainspec::{once_cell_set, BaseFeeParams, BaseFeeParamsKind, ChainSpec, Hardfork};
|
||||
use reth_chainspec::{make_genesis_header, BaseFeeParams, BaseFeeParamsKind, ChainSpec, Hardfork};
|
||||
use reth_ethereum_forks::EthereumHardfork;
|
||||
use reth_optimism_forks::OpHardfork;
|
||||
use reth_primitives_traits::SealedHeader;
|
||||
|
||||
/// The Optimism Mainnet spec
|
||||
pub static OP_MAINNET: LazyLock<Arc<OpChainSpec>> = LazyLock::new(|| {
|
||||
// genesis contains empty alloc field because state at first bedrock block is imported
|
||||
// manually from trusted source
|
||||
let genesis = serde_json::from_str(include_str!("../res/genesis/optimism.json"))
|
||||
.expect("Can't deserialize Optimism Mainnet genesis json");
|
||||
let hardforks = OpHardfork::op_mainnet();
|
||||
OpChainSpec {
|
||||
inner: ChainSpec {
|
||||
chain: Chain::optimism_mainnet(),
|
||||
// genesis contains empty alloc field because state at first bedrock block is imported
|
||||
// manually from trusted source
|
||||
genesis: serde_json::from_str(include_str!("../res/genesis/optimism.json"))
|
||||
.expect("Can't deserialize Optimism Mainnet genesis json"),
|
||||
genesis_hash: once_cell_set(b256!(
|
||||
"7ca38a1916c42007829c55e69d3e9a73265554b586a499015373241b8a3fa48b"
|
||||
)),
|
||||
genesis_header: SealedHeader::new(
|
||||
make_genesis_header(&genesis, &hardforks),
|
||||
b256!("7ca38a1916c42007829c55e69d3e9a73265554b586a499015373241b8a3fa48b"),
|
||||
),
|
||||
genesis,
|
||||
paris_block_and_final_difficulty: Some((0, U256::from(0))),
|
||||
hardforks: OpHardfork::op_mainnet(),
|
||||
hardforks,
|
||||
base_fee_params: BaseFeeParamsKind::Variable(
|
||||
vec![
|
||||
(EthereumHardfork::London.boxed(), BaseFeeParams::optimism()),
|
||||
|
||||
@ -4,22 +4,26 @@ use crate::{LazyLock, OpChainSpec};
|
||||
use alloc::{sync::Arc, vec};
|
||||
use alloy_chains::{Chain, NamedChain};
|
||||
use alloy_primitives::{b256, U256};
|
||||
use reth_chainspec::{once_cell_set, BaseFeeParams, BaseFeeParamsKind, ChainSpec, Hardfork};
|
||||
use reth_chainspec::{make_genesis_header, BaseFeeParams, BaseFeeParamsKind, ChainSpec, Hardfork};
|
||||
use reth_ethereum_forks::EthereumHardfork;
|
||||
use reth_optimism_forks::OpHardfork;
|
||||
use reth_primitives_traits::SealedHeader;
|
||||
|
||||
/// The OP Sepolia spec
|
||||
pub static OP_SEPOLIA: LazyLock<Arc<OpChainSpec>> = LazyLock::new(|| {
|
||||
let genesis = serde_json::from_str(include_str!("../res/genesis/sepolia_op.json"))
|
||||
.expect("Can't deserialize OP Sepolia genesis json");
|
||||
let hardforks = OpHardfork::op_sepolia();
|
||||
OpChainSpec {
|
||||
inner: ChainSpec {
|
||||
chain: Chain::from_named(NamedChain::OptimismSepolia),
|
||||
genesis: serde_json::from_str(include_str!("../res/genesis/sepolia_op.json"))
|
||||
.expect("Can't deserialize OP Sepolia genesis json"),
|
||||
genesis_hash: once_cell_set(b256!(
|
||||
"102de6ffb001480cc9b8b548fd05c34cd4f46ae4aa91759393db90ea0409887d"
|
||||
)),
|
||||
genesis_header: SealedHeader::new(
|
||||
make_genesis_header(&genesis, &hardforks),
|
||||
b256!("102de6ffb001480cc9b8b548fd05c34cd4f46ae4aa91759393db90ea0409887d"),
|
||||
),
|
||||
genesis,
|
||||
paris_block_and_final_difficulty: Some((0, U256::from(0))),
|
||||
hardforks: OpHardfork::op_sepolia(),
|
||||
hardforks,
|
||||
base_fee_params: BaseFeeParamsKind::Variable(
|
||||
vec![
|
||||
(EthereumHardfork::London.boxed(), BaseFeeParams::optimism_sepolia()),
|
||||
|
||||
Reference in New Issue
Block a user