Skip to content

Commit b05861d

Browse files
authored
feat(zkstack): Remove Redundant fields from inputs (#4602)
## What ❔ <!-- What are the changes this PR brings about? --> <!-- Example: This PR adds a PR template to the repo. --> <!-- (For bigger PRs adding more context is appreciated) --> ## Why ❔ <!-- Why are these changes done? What goal do they contribute to? What are the principles behind them? --> <!-- The `Why` has to be clear to non-Matter Labs entities running their own ZK Chain --> <!-- Example: PR templates ensure PR reviewers, observers, and future iterators are in context about the evolution of repos. --> ## Is this a breaking change? - [ ] Yes - [ ] No ## Operational changes <!-- Any config changes? Any new flags? Any changes to any scripts? --> <!-- Please add anything that non-Matter Labs entities running their own ZK Chain may need to know --> ## Checklist <!-- Check your PR fulfills the following items. --> <!-- For draft PRs check the boxes as you complete them. --> - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `zkstack dev fmt` and `zkstack dev lint`. --------- Signed-off-by: Danil <[email protected]>
1 parent 98af441 commit b05861d

File tree

19 files changed

+153
-368
lines changed

19 files changed

+153
-368
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,3 +125,4 @@ out
125125
.format_sql_snapshot
126126
.prettier_cache.json
127127
.prettier_cache_contracts.json
128+
call_traces.json

contracts

Submodule contracts updated 44 files

core/lib/constants/src/contracts.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,22 +213,22 @@ pub const UPGRADEABLE_BEACON_DEPLOYER_ADDRESS: Address = H160([
213213

214214
pub const L2_INTEROP_CENTER_ADDRESS: Address = H160([
215215
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
216-
0x00, 0x01, 0x00, 0x10,
216+
0x00, 0x01, 0x00, 0x0d,
217217
]);
218218

219219
pub const L2_INTEROP_HANDLER_ADDRESS: Address = H160([
220220
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
221-
0x00, 0x01, 0x00, 0x0d,
221+
0x00, 0x01, 0x00, 0x0e,
222222
]);
223223

224224
pub const L2_ASSET_TRACKER_ADDRESS: Address = H160([
225225
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
226-
0x00, 0x01, 0x00, 0x0e,
226+
0x00, 0x01, 0x00, 0x0f,
227227
]);
228228

229229
pub const GW_ASSET_TRACKER_ADDRESS: Address = H160([
230230
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
231-
0x00, 0x01, 0x00, 0x0f,
231+
0x00, 0x01, 0x00, 0x10,
232232
]);
233233

234234
pub const L2_SYSTEM_CONTRACT_PROXY_ADMIN_ADDRESS: Address = H160([

zkstack_cli/crates/config/src/contracts.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ use zksync_system_constants::{L2_ASSET_ROUTER_ADDRESS, L2_NATIVE_TOKEN_VAULT_ADD
1111
use crate::{
1212
consts::CONTRACTS_FILE,
1313
forge_interface::{
14-
deploy_ecosystem::output::{DeployCTMOutput, DeployL1CoreContractsOutput},
14+
deploy_ctm::output::DeployCTMOutput,
15+
deploy_ecosystem::output::DeployL1CoreContractsOutput,
1516
deploy_l2_contracts::output::{
1617
ConsensusRegistryOutput, DefaultL2UpgradeOutput, Multicall3Output,
1718
TimestampAsserterOutput,
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
use ethers::types::{Address, H256};
2+
use serde::{Deserialize, Serialize};
3+
use zkstack_cli_types::{L1Network, VMOption};
4+
5+
use crate::{
6+
forge_interface::deploy_ecosystem::input::InitialDeploymentConfig, traits::FileConfigTrait,
7+
WalletsConfig,
8+
};
9+
10+
#[derive(Debug, Deserialize, Serialize, Clone)]
11+
pub struct DeployCTMConfig {
12+
pub owner_address: Address,
13+
pub testnet_verifier: bool,
14+
pub support_l2_legacy_shared_bridge_test: bool,
15+
pub contracts: ContractsDeployCTMConfig,
16+
pub is_zk_sync_os: bool,
17+
}
18+
19+
impl FileConfigTrait for DeployCTMConfig {}
20+
21+
impl DeployCTMConfig {
22+
pub fn new(
23+
wallets_config: &WalletsConfig,
24+
initial_deployment_config: &InitialDeploymentConfig,
25+
testnet_verifier: bool,
26+
l1_network: L1Network,
27+
support_l2_legacy_shared_bridge_test: bool,
28+
vm_option: VMOption,
29+
) -> Self {
30+
Self {
31+
is_zk_sync_os: vm_option.is_zksync_os(),
32+
testnet_verifier,
33+
owner_address: wallets_config.governor.address,
34+
support_l2_legacy_shared_bridge_test,
35+
contracts: ContractsDeployCTMConfig {
36+
create2_factory_addr: initial_deployment_config.create2_factory_addr,
37+
create2_factory_salt: initial_deployment_config.create2_factory_salt,
38+
// TODO verify correctnesss
39+
governance_security_council_address: wallets_config.governor.address,
40+
governance_min_delay: initial_deployment_config.governance_min_delay,
41+
validator_timelock_execution_delay: initial_deployment_config
42+
.validator_timelock_execution_delay,
43+
avail_l1_da_validator_addr: l1_network.avail_l1_da_validator_addr(),
44+
},
45+
}
46+
}
47+
}
48+
49+
#[derive(Debug, Deserialize, Serialize, Clone)]
50+
pub struct ContractsDeployCTMConfig {
51+
pub create2_factory_salt: H256,
52+
#[serde(skip_serializing_if = "Option::is_none")]
53+
pub create2_factory_addr: Option<Address>,
54+
pub governance_security_council_address: Address,
55+
pub governance_min_delay: u64,
56+
pub validator_timelock_execution_delay: u64,
57+
#[serde(skip_serializing_if = "Option::is_none")]
58+
pub avail_l1_da_validator_addr: Option<Address>,
59+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
pub mod input;
2+
pub mod output;
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
use ethers::types::Address;
2+
use serde::{Deserialize, Serialize};
3+
4+
use crate::traits::FileConfigTrait;
5+
6+
#[derive(Debug, Deserialize, Serialize, Clone)]
7+
pub struct DeployCTMOutput {
8+
pub contracts_config: DeployCTMContractsConfigOutput,
9+
pub deployed_addresses: DeployCTMDeployedAddressesOutput,
10+
pub multicall3_addr: Address,
11+
}
12+
13+
#[derive(Debug, Deserialize, Serialize, Clone)]
14+
pub struct DeployCTMDeployedAddressesOutput {
15+
pub governance_addr: Address,
16+
pub transparent_proxy_admin_addr: Address,
17+
pub validator_timelock_addr: Address,
18+
pub chain_admin: Address,
19+
pub state_transition: L1StateTransitionOutput,
20+
pub rollup_l1_da_validator_addr: Address,
21+
pub no_da_validium_l1_validator_addr: Address,
22+
pub avail_l1_da_validator_addr: Address,
23+
pub l1_rollup_da_manager: Address,
24+
pub blobs_zksync_os_l1_da_validator_addr: Option<Address>,
25+
pub server_notifier_proxy_addr: Address,
26+
}
27+
28+
impl FileConfigTrait for DeployCTMOutput {}
29+
30+
#[derive(Debug, Deserialize, Serialize, Clone)]
31+
pub struct DeployCTMContractsConfigOutput {
32+
pub diamond_cut_data: String,
33+
pub force_deployments_data: Option<String>,
34+
}
35+
36+
#[derive(Debug, Deserialize, Serialize, Clone)]
37+
pub struct L1StateTransitionOutput {
38+
pub state_transition_proxy_addr: Address,
39+
pub verifier_addr: Address,
40+
pub genesis_upgrade_addr: Address,
41+
pub default_upgrade_addr: Address,
42+
pub bytecodes_supplier_addr: Address,
43+
}

zkstack_cli/crates/config/src/forge_interface/deploy_ecosystem/input.rs

Lines changed: 6 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -6,83 +6,24 @@ use ethers::{
66
};
77
use rand::Rng;
88
use serde::{Deserialize, Serialize};
9-
use zkstack_cli_types::{L1Network, VMOption};
10-
use zksync_basic_types::{protocol_version::ProtocolSemanticVersion, u256_to_h256, L2ChainId};
9+
use zksync_basic_types::L2ChainId;
1110

1211
use crate::{
1312
consts::INITIAL_DEPLOYMENT_FILE,
1413
traits::{FileConfigTrait, FileConfigWithDefaultName},
15-
ContractsConfigForDeployERC20, ContractsGenesisConfig, WalletsConfig, ERC20_DEPLOYMENT_FILE,
14+
ContractsConfigForDeployERC20, WalletsConfig, ERC20_DEPLOYMENT_FILE,
1615
};
1716

18-
/// Part of the genesis config influencing `DeployGatewayCTMInput`.
19-
#[derive(Debug)]
20-
pub struct GenesisInput {
21-
pub bootloader_hash: H256,
22-
pub default_aa_hash: H256,
23-
pub evm_emulator_hash: H256,
24-
pub genesis_root_hash: H256,
25-
pub rollup_last_leaf_index: u64,
26-
pub genesis_commitment: H256,
27-
pub protocol_version: ProtocolSemanticVersion,
28-
}
29-
30-
impl GenesisInput {
31-
pub fn new(
32-
contract_genesis_config: &ContractsGenesisConfig,
33-
vmoption: VMOption,
34-
) -> anyhow::Result<Self> {
35-
let protocol_version = contract_genesis_config.protocol_semantic_version()?;
36-
match vmoption {
37-
VMOption::EraVM => Ok(Self {
38-
bootloader_hash: contract_genesis_config.0.get("bootloader_hash")?,
39-
default_aa_hash: contract_genesis_config.0.get("default_aa_hash")?,
40-
evm_emulator_hash: contract_genesis_config
41-
.0
42-
.get_opt("evm_emulator_hash")?
43-
.unwrap_or_default(),
44-
genesis_root_hash: contract_genesis_config.0.get("genesis_root")?,
45-
rollup_last_leaf_index: contract_genesis_config
46-
.0
47-
.get("genesis_rollup_leaf_index")?,
48-
genesis_commitment: contract_genesis_config.0.get("genesis_batch_commitment")?,
49-
protocol_version,
50-
}),
51-
VMOption::ZKSyncOsVM => {
52-
let one = u256_to_h256(U256::one());
53-
let genesis_root = contract_genesis_config.0.get("genesis_root")?;
54-
Ok(Self {
55-
genesis_root_hash: genesis_root,
56-
// Placeholders, not used in zkSync OS mode. But necessary to be provided.
57-
genesis_commitment: one,
58-
bootloader_hash: one,
59-
default_aa_hash: one,
60-
evm_emulator_hash: one,
61-
rollup_last_leaf_index: 0,
62-
protocol_version,
63-
})
64-
}
65-
}
66-
}
67-
}
68-
6917
#[derive(Debug, Deserialize, Serialize, Clone)]
7018
pub struct InitialDeploymentConfig {
7119
#[serde(skip_serializing_if = "Option::is_none")]
7220
pub create2_factory_addr: Option<Address>,
7321
pub create2_factory_salt: H256,
7422
pub governance_min_delay: u64,
75-
pub max_number_of_chains: u64,
76-
pub diamond_init_batch_overhead_l1_gas: u64,
77-
pub diamond_init_max_l2_gas_per_batch: u64,
78-
pub diamond_init_max_pubdata_per_batch: u64,
79-
pub diamond_init_minimal_l2_gas_price: u64,
80-
pub diamond_init_priority_tx_max_pubdata: u64,
81-
pub diamond_init_pubdata_pricing_mode: u64,
82-
pub priority_tx_max_gas_limit: u64,
83-
pub validator_timelock_execution_delay: u64,
8423
pub token_weth_address: Address,
8524
pub bridgehub_create_new_chain_salt: u64,
25+
pub max_number_of_chains: u64,
26+
pub validator_timelock_execution_delay: u64,
8627
}
8728

8829
impl Default for InitialDeploymentConfig {
@@ -92,13 +33,6 @@ impl Default for InitialDeploymentConfig {
9233
create2_factory_salt: H256::random(),
9334
governance_min_delay: 0,
9435
max_number_of_chains: 100,
95-
diamond_init_batch_overhead_l1_gas: 1000000,
96-
diamond_init_max_l2_gas_per_batch: 80000000,
97-
diamond_init_max_pubdata_per_batch: 120000,
98-
diamond_init_minimal_l2_gas_price: 250000000,
99-
diamond_init_priority_tx_max_pubdata: 99000,
100-
diamond_init_pubdata_pricing_mode: 0,
101-
priority_tx_max_gas_limit: 72000000,
10236
validator_timelock_execution_delay: 0,
10337
token_weth_address: Address::from_str("0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2")
10438
.unwrap(),
@@ -162,31 +96,22 @@ pub struct Erc20DeploymentTokensConfig {
16296
pub struct DeployL1Config {
16397
pub era_chain_id: L2ChainId,
16498
pub owner_address: Address,
165-
pub testnet_verifier: bool,
16699
pub support_l2_legacy_shared_bridge_test: bool,
167100
pub contracts: ContractsDeployL1Config,
168101
pub tokens: TokensDeployL1Config,
169-
pub is_zk_sync_os: bool,
170102
}
171103

172104
impl FileConfigTrait for DeployL1Config {}
173105

174106
impl DeployL1Config {
175-
#[allow(clippy::too_many_arguments)]
176107
pub fn new(
177-
genesis_input: &GenesisInput,
178108
wallets_config: &WalletsConfig,
179109
initial_deployment_config: &InitialDeploymentConfig,
180110
era_chain_id: L2ChainId,
181-
testnet_verifier: bool,
182-
l1_network: L1Network,
183111
support_l2_legacy_shared_bridge_test: bool,
184-
vm_option: VMOption,
185112
) -> Self {
186113
Self {
187-
is_zk_sync_os: vm_option.is_zksync_os(),
188114
era_chain_id,
189-
testnet_verifier,
190115
owner_address: wallets_config.governor.address,
191116
support_l2_legacy_shared_bridge_test,
192117
contracts: ContractsDeployL1Config {
@@ -196,33 +121,7 @@ impl DeployL1Config {
196121
governance_security_council_address: wallets_config.governor.address,
197122
governance_min_delay: initial_deployment_config.governance_min_delay,
198123
max_number_of_chains: initial_deployment_config.max_number_of_chains,
199-
diamond_init_batch_overhead_l1_gas: initial_deployment_config
200-
.diamond_init_batch_overhead_l1_gas,
201-
diamond_init_max_l2_gas_per_batch: initial_deployment_config
202-
.diamond_init_max_l2_gas_per_batch,
203-
diamond_init_max_pubdata_per_batch: initial_deployment_config
204-
.diamond_init_max_pubdata_per_batch,
205-
diamond_init_minimal_l2_gas_price: initial_deployment_config
206-
.diamond_init_minimal_l2_gas_price,
207-
bootloader_hash: genesis_input.bootloader_hash,
208-
default_aa_hash: genesis_input.default_aa_hash,
209-
evm_emulator_hash: genesis_input.evm_emulator_hash,
210-
diamond_init_priority_tx_max_pubdata: initial_deployment_config
211-
.diamond_init_priority_tx_max_pubdata,
212-
diamond_init_pubdata_pricing_mode: initial_deployment_config
213-
.diamond_init_pubdata_pricing_mode,
214-
// These values are not optional in genesis config with file based configuration
215-
genesis_batch_commitment: genesis_input.genesis_commitment,
216-
genesis_rollup_leaf_index: genesis_input.rollup_last_leaf_index,
217-
genesis_root: genesis_input.genesis_root_hash,
218-
latest_protocol_version: genesis_input.protocol_version.pack(),
219-
recursion_circuits_set_vks_hash: H256::zero(),
220-
recursion_leaf_level_vk_hash: H256::zero(),
221-
recursion_node_level_vk_hash: H256::zero(),
222-
priority_tx_max_gas_limit: initial_deployment_config.priority_tx_max_gas_limit,
223-
validator_timelock_execution_delay: initial_deployment_config
224-
.validator_timelock_execution_delay,
225-
avail_l1_da_validator_addr: l1_network.avail_l1_da_validator_addr(),
124+
era_diamond_proxy_addr: None,
226125
},
227126
tokens: TokensDeployL1Config {
228127
token_weth_address: initial_deployment_config.token_weth_address,
@@ -239,26 +138,7 @@ pub struct ContractsDeployL1Config {
239138
pub create2_factory_salt: H256,
240139
#[serde(skip_serializing_if = "Option::is_none")]
241140
pub create2_factory_addr: Option<Address>,
242-
pub validator_timelock_execution_delay: u64,
243-
pub genesis_root: H256,
244-
pub genesis_rollup_leaf_index: u64,
245-
pub genesis_batch_commitment: H256,
246-
pub latest_protocol_version: U256,
247-
pub recursion_node_level_vk_hash: H256,
248-
pub recursion_leaf_level_vk_hash: H256,
249-
pub recursion_circuits_set_vks_hash: H256,
250-
pub priority_tx_max_gas_limit: u64,
251-
pub diamond_init_pubdata_pricing_mode: u64,
252-
pub diamond_init_batch_overhead_l1_gas: u64,
253-
pub diamond_init_max_pubdata_per_batch: u64,
254-
pub diamond_init_max_l2_gas_per_batch: u64,
255-
pub diamond_init_priority_tx_max_pubdata: u64,
256-
pub diamond_init_minimal_l2_gas_price: u64,
257-
pub bootloader_hash: H256,
258-
pub default_aa_hash: H256,
259-
pub evm_emulator_hash: H256,
260-
#[serde(skip_serializing_if = "Option::is_none")]
261-
pub avail_l1_da_validator_addr: Option<Address>,
141+
pub era_diamond_proxy_addr: Option<Address>,
262142
}
263143

264144
#[derive(Debug, Deserialize, Serialize, Clone)]

0 commit comments

Comments
 (0)