axos_primitives/chain/optimism/
mainnet.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() -> 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}