anvil_zksync_l1_sidecar/
upgrade_tx.rs

1use 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}