axos_primitives/chain/optimism/
mainnet.rs

1use crate::alloc::string::ToString;
2use alloy_primitives::{address, b256, U256};
3
4use crate::BlockInfo;
5use crate::ChainConfig;
6use crate::Epoch;
7use crate::SystemConfig;
8
9impl ChainConfig {
10    /// Optimism Mainnet [ChainConfig].
11    pub fn optimism() -> Self {
12        Self {
13            network: "optimism".to_string(),
14            l1_chain_id: 1,
15            l2_chain_id: 10,
16            l1_start_epoch: Epoch {
17                hash: b256!("438335a20d98863a4c0c97999eb2481921ccd28553eac6f913af7c12aec04108"),
18                number: 17422590,
19                timestamp: 1686068903,
20            },
21            l2_genesis: BlockInfo {
22                hash: b256!("dbf6a80fef073de06add9b0d14026d6e5a86c85f6d102c36d3d8e9cf89c2afd3"),
23                number: 105235063,
24                parent_hash: b256!(
25                    "21a168dfa5e727926063a28ba16fd5ee84c814e847c81a699c7a0ea551e4ca50"
26                ),
27                timestamp: 1686068903,
28            },
29            system_config: SystemConfig {
30                batch_sender: address!("6887246668a3b87f54deb3b94ba47a6f63f32985"),
31                gas_limit: U256::from(30_000_000),
32                l1_fee_overhead: U256::from(188),
33                l1_fee_scalar: U256::from(684000),
34                unsafe_block_signer: address!("AAAA45d9549EDA09E70937013520214382Ffc4A2"),
35            },
36            batch_inbox: address!("ff00000000000000000000000000000000000010"),
37            deposit_contract: address!("bEb5Fc579115071764c7423A4f12eDde41f106Ed"),
38            system_config_contract: address!("229047fed2591dbec1eF1118d64F7aF3dB9EB290"),
39            l2_to_l1_message_passer: address!("4200000000000000000000000000000000000016"),
40            max_channel_size: 100_000_000,
41            channel_timeout: 300,
42            seq_window_size: 3600,
43            max_seq_drift: 600,
44            blocktime: 2,
45            regolith_time: 0,
46        }
47    }
48}
49
50#[cfg(test)]
51mod test {
52    use super::*;
53
54    const OPTIMISM: &str = r#"
55        {
56            "network": "optimism",
57            "l1_chain_id": 1,
58            "l2_chain_id": 10,
59            "l1_start_epoch": {
60                "number": 17422590,
61                "hash": "438335a20d98863a4c0c97999eb2481921ccd28553eac6f913af7c12aec04108",
62                "timestamp": 1686068903
63            },
64            "l2_genesis": {
65                "hash": "dbf6a80fef073de06add9b0d14026d6e5a86c85f6d102c36d3d8e9cf89c2afd3",
66                "number": 105235063,
67                "parent_hash": "21a168dfa5e727926063a28ba16fd5ee84c814e847c81a699c7a0ea551e4ca50",
68                "timestamp": 1686068903
69            },
70            "system_config": {
71                "batch_sender": "6887246668a3b87f54deb3b94ba47a6f63f32985",
72                "gas_limit": 30000000,
73                "l1_fee_overhead": 188,
74                "l1_fee_scalar": 684000,
75                "unsafe_block_signer": "AAAA45d9549EDA09E70937013520214382Ffc4A2"
76            },
77            "batch_inbox": "ff00000000000000000000000000000000000010",
78            "deposit_contract": "bEb5Fc579115071764c7423A4f12eDde41f106Ed",
79            "system_config_contract": "229047fed2591dbec1eF1118d64F7aF3dB9EB290",
80            "l2_to_l1_message_passer": "4200000000000000000000000000000000000016",
81            "max_channel_size": 100000000,
82            "channel_timeout": 300,
83            "seq_window_size": 3600,
84            "max_seq_drift": 600,
85            "blocktime": 2,
86            "regolith_time": 0
87        }
88    "#;
89
90    #[test]
91    fn test_optimism() {
92        let config = ChainConfig::optimism();
93        let parsed = serde_json::from_str::<ChainConfig>(OPTIMISM).unwrap();
94        assert_eq!(config, parsed);
95    }
96}