axos_primitives/chain/base/
goerli.rs

1use crate::alloc::string::ToString;
2use alloy_primitives::{address, b256, B256, U256};
3
4use crate::BlockInfo;
5use crate::ChainConfig;
6use crate::Epoch;
7use crate::SystemConfig;
8
9impl ChainConfig {
10    /// Base Goerli [ChainConfig].
11    pub fn base_goerli() -> Self {
12        Self {
13            network: "base-goerli".to_string(),
14            l1_chain_id: 5,
15            l2_chain_id: 84531,
16            l1_start_epoch: Epoch {
17                number: 8410981,
18                hash: b256!("73d89754a1e0387b89520d989d3be9c37c1f32495a88faf1ea05c61121ab0d19"),
19                timestamp: 1675193616,
20            },
21            l2_genesis: BlockInfo {
22                hash: b256!("a3ab140f15ea7f7443a4702da64c10314eb04d488e72974e02e2d728096b4f76"),
23                number: 0,
24                parent_hash: B256::ZERO,
25                timestamp: 1675193616,
26            },
27            system_config: SystemConfig {
28                batch_sender: address!("2d679b567db6187c0c8323fa982cfb88b74dbcc7"),
29                gas_limit: U256::from(25_000_000),
30                l1_fee_overhead: U256::from(2100),
31                l1_fee_scalar: U256::from(1000000),
32                unsafe_block_signer: address!("32a4e99A72c11E9DD3dC159909a2D7BD86C1Bc51"),
33            },
34            system_config_contract: address!("b15eea247ece011c68a614e4a77ad648ff495bc1"),
35            batch_inbox: address!("8453100000000000000000000000000000000000"),
36            deposit_contract: address!("e93c8cd0d409341205a592f8c4ac1a5fe5585cfa"),
37            l2_to_l1_message_passer: address!("4200000000000000000000000000000000000016"),
38            max_channel_size: 100_000_000,
39            channel_timeout: 100,
40            seq_window_size: 3600,
41            max_seq_drift: 600,
42            regolith_time: 1683219600,
43            blocktime: 2,
44        }
45    }
46}
47
48#[cfg(test)]
49mod test {
50    use super::*;
51
52    const BASE_GOERLI: &str = r#"
53        {
54            "network": "base-goerli",
55            "l1_chain_id": 5,
56            "l2_chain_id": 84531,
57            "l1_start_epoch": {
58                "number": 8410981,
59                "hash": "73d89754a1e0387b89520d989d3be9c37c1f32495a88faf1ea05c61121ab0d19",
60                "timestamp": 1675193616
61            },
62            "l2_genesis": {
63                "hash": "a3ab140f15ea7f7443a4702da64c10314eb04d488e72974e02e2d728096b4f76",
64                "number": 0,
65                "parent_hash": "0000000000000000000000000000000000000000000000000000000000000000",
66                "timestamp": 1675193616
67            },
68            "system_config": {
69                "batch_sender": "2d679b567db6187c0c8323fa982cfb88b74dbcc7",
70                "gas_limit": 25000000,
71                "l1_fee_overhead": 2100,
72                "l1_fee_scalar": 1000000,
73                "unsafe_block_signer": "32a4e99A72c11E9DD3dC159909a2D7BD86C1Bc51"
74            },
75            "system_config_contract": "b15eea247ece011c68a614e4a77ad648ff495bc1",
76            "batch_inbox": "8453100000000000000000000000000000000000",
77            "deposit_contract": "e93c8cd0d409341205a592f8c4ac1a5fe5585cfa",
78            "l2_to_l1_message_passer": "4200000000000000000000000000000000000016",
79            "max_channel_size": 100000000,
80            "channel_timeout": 100,
81            "seq_window_size": 3600,
82            "max_seq_drift": 600,
83            "regolith_time": 1683219600,
84            "blocktime": 2
85        }
86    "#;
87
88    #[test]
89    fn test_base_goerli() {
90        let config = ChainConfig::base_goerli();
91        let parsed = serde_json::from_str::<ChainConfig>(BASE_GOERLI).unwrap();
92        assert_eq!(config, parsed);
93    }
94}