axos_primitives/chain/optimism/
goerli.rs1use 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 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}