axos_primitives/chain/optimism/
goerli.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 Goerli [ChainConfig].
11    pub fn optimism_goerli() -> Self {
12        Self {
13            network: "optimism-goerli".to_string(),
14            l1_chain_id: 5,
15            l2_chain_id: 420,
16            l1_start_epoch: Epoch {
17                hash: b256!("6ffc1bf3754c01f6bb9fe057c1578b87a8571ce2e9be5ca14bace6eccfd336c7"),
18                number: 8300214,
19                timestamp: 1673550516,
20            },
21            l2_genesis: BlockInfo {
22                hash: b256!("0f783549ea4313b784eadd9b8e8a69913b368b7366363ea814d7707ac505175f"),
23                number: 4061224,
24                parent_hash: b256!(
25                    "31267a44f1422f4cab59b076548c075e79bd59e691a23fbce027f572a2a49dc9"
26                ),
27                timestamp: 1673550516,
28            },
29            system_config: SystemConfig {
30                batch_sender: address!("7431310e026b69bfc676c0013e12a1a11411eec9"),
31                gas_limit: U256::from(25_000_000),
32                l1_fee_overhead: U256::from(2100),
33                l1_fee_scalar: U256::from(1000000),
34                unsafe_block_signer: address!("715b7219D986641DF9eFd9C7Ef01218D528e19ec"),
35            },
36            system_config_contract: address!("Ae851f927Ee40dE99aaBb7461C00f9622ab91d60"),
37            batch_inbox: address!("ff00000000000000000000000000000000000420"),
38            deposit_contract: address!("5b47E1A08Ea6d985D6649300584e6722Ec4B1383"),
39            l2_to_l1_message_passer: address!("EF2ec5A5465f075E010BE70966a8667c94BCe15a"),
40            max_channel_size: 100_000_000,
41            channel_timeout: 300,
42            seq_window_size: 3600,
43            max_seq_drift: 600,
44            regolith_time: 1679079600,
45            blocktime: 2,
46        }
47    }
48}
49
50#[cfg(test)]
51mod test {
52    use super::*;
53
54    const OPTIMISM_GOERLI: &str = r#"
55        {
56            "network": "optimism-goerli",
57            "l1_chain_id": 5,
58            "l2_chain_id": 420,
59            "l1_start_epoch": {
60                "number": 8300214,
61                "hash": "6ffc1bf3754c01f6bb9fe057c1578b87a8571ce2e9be5ca14bace6eccfd336c7",
62                "timestamp": 1673550516
63            },
64            "l2_genesis": {
65                "hash": "0f783549ea4313b784eadd9b8e8a69913b368b7366363ea814d7707ac505175f",
66                "number": 4061224,
67                "parent_hash": "31267a44f1422f4cab59b076548c075e79bd59e691a23fbce027f572a2a49dc9",
68                "timestamp": 1673550516
69            },
70            "system_config": {
71                "batch_sender": "7431310e026b69bfc676c0013e12a1a11411eec9",
72                "gas_limit": "25000000",
73                "l1_fee_overhead": "2100",
74                "l1_fee_scalar": "1000000",
75                "unsafe_block_signer": "715b7219D986641DF9eFd9C7Ef01218D528e19ec"
76            },
77            "system_config_contract": "Ae851f927Ee40dE99aaBb7461C00f9622ab91d60",
78            "batch_inbox": "ff00000000000000000000000000000000000420",
79            "deposit_contract": "5b47E1A08Ea6d985D6649300584e6722Ec4B1383",
80            "l2_to_l1_message_passer": "EF2ec5A5465f075E010BE70966a8667c94BCe15a",
81            "max_channel_size": 100000000,
82            "channel_timeout": 300,
83            "seq_window_size": 3600,
84            "max_seq_drift": 600,
85            "regolith_time": 1679079600,
86            "blocktime": 2
87        }
88    "#;
89
90    #[test]
91    fn test_optimism_goerli() {
92        let config = ChainConfig::optimism_goerli();
93        let parsed = serde_json::from_str::<ChainConfig>(OPTIMISM_GOERLI).unwrap();
94        assert_eq!(config, parsed);
95    }
96}