Skip to main content

foundry_evm_networks/
optimism.rs

1//! Optimism-specific extensions for [`NetworkConfigs`] and related helpers.
2
3use crate::{NetworkConfigs, NetworkVariant};
4use alloy_eips::eip1559::BaseFeeParams;
5use alloy_op_hardforks::{OpChainHardforks, OpHardforks};
6
7impl NetworkConfigs {
8    pub fn with_optimism() -> Self {
9        Self { network: Some(NetworkVariant::Optimism), optimism: true, ..Default::default() }
10    }
11
12    pub const fn is_optimism(&self) -> bool {
13        matches!(self.resolved_network(), Some(NetworkVariant::Optimism))
14    }
15
16    /// Optimism-specific base fee parameters, picking Canyon vs pre-Canyon based on `timestamp`.
17    pub(crate) fn op_base_fee_params(&self, timestamp: u64) -> BaseFeeParams {
18        let op_hardforks = OpChainHardforks::op_mainnet();
19        if op_hardforks.is_canyon_active_at_timestamp(timestamp) {
20            BaseFeeParams::optimism_canyon()
21        } else {
22            BaseFeeParams::optimism()
23        }
24    }
25}