anvil_zksync_l1_sidecar/
upgrade_tx.rs1use once_cell::sync::Lazy;
2use serde::Deserialize;
3use std::collections::HashMap;
4use zksync_types::{Address, Execute, ProtocolVersionId, H256};
5
6static BUILTIN_UPGRADE_TXS: Lazy<HashMap<ProtocolVersionId, UpgradeTx>> = Lazy::new(|| {
7 HashMap::from_iter([
8 (
9 ProtocolVersionId::Version26,
10 serde_json::from_slice::<UpgradeTx>(include_bytes!(
11 "../../../l1-setup/state/v26-l2-upgrade-tx.json"
12 ))
13 .unwrap(),
14 ),
15 (
16 ProtocolVersionId::Version27,
17 serde_json::from_slice::<UpgradeTx>(include_bytes!(
18 "../../../l1-setup/state/v27-l2-upgrade-tx.json"
19 ))
20 .unwrap(),
21 ),
22 (
23 ProtocolVersionId::Version28,
24 serde_json::from_slice::<UpgradeTx>(include_bytes!(
25 "../../../l1-setup/state/v28-l2-upgrade-tx.json"
26 ))
27 .unwrap(),
28 ),
29 ])
30});
31
32#[derive(Clone, Deserialize)]
33pub struct UpgradeTx {
34 pub data: Execute,
35 pub hash: H256,
36 pub gas_limit: u64,
37 pub l1_tx_mint: u64,
38 pub l1_block_number: u64,
39 pub max_fee_per_gas: u64,
40 pub initiator_address: Address,
41 pub gas_per_pubdata_limit: u64,
42 pub l1_tx_refund_recipient: Address,
43}
44
45impl UpgradeTx {
46 pub fn builtin(protocol_version: ProtocolVersionId) -> Self {
47 BUILTIN_UPGRADE_TXS
48 .get(&protocol_version)
49 .expect("unsupported protocol version")
50 .clone()
51 }
52}