From 90dee732295d8eaf48a5308c39238a0f5838cc35 Mon Sep 17 00:00:00 2001 From: Danil Date: Fri, 15 Mar 2024 22:29:45 +0100 Subject: [PATCH] fix(protocol): Remove verifier address from protocol upgrade (#1443) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What ❔ Verifier address, has never been using after save, so we are removing it for supporting simpler genesis process ## Why ❔ ## Checklist - [ ] 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 `zk fmt` and `zk lint`. - [ ] Spellcheck has been run via `zk spellcheck`. - [ ] Linkcheck has been run via `zk linkcheck`. --------- Signed-off-by: Danil --- ...d77e0fac2246c68e8e15a831f1a45dc3b2240d5c6809d5ef2.json | 2 +- ...75096e69f8665d98a3d9f7df162ae22a98c3c7620fcd13bd2.json | 2 +- ...0e1c07a797cd1d4794007904fef7a5e837ebfb1b502711a1.json} | 5 ++--- ...e0feb367b1d64561347b81f8931cc2addefa907c9aa9355e6.json | 2 +- .../20240315172816_drop_not_null_verifier.down.sql | 2 ++ .../20240315172816_drop_not_null_verifier.up.sql | 2 ++ core/lib/dal/src/models/storage_protocol_version.rs | 6 +++--- core/lib/dal/src/protocol_versions_dal.rs | 8 ++------ core/lib/types/src/protocol_version.rs | 3 --- core/lib/zksync_core/src/genesis.rs | 8 -------- core/lib/zksync_core/src/lib.rs | 1 - .../src/state_keeper/batch_executor/tests/tester.rs | 1 - core/lib/zksync_core/src/state_keeper/io/tests/tester.rs | 1 - core/lib/zksync_core/src/sync_layer/external_io.rs | 2 -- core/lib/zksync_core/src/sync_layer/genesis.rs | 5 +---- 15 files changed, 15 insertions(+), 35 deletions(-) rename core/lib/dal/.sqlx/{query-0a3cb11f5bdcb8da31dbd4e3016fced141fb29dd8b6c32dd2dc3452dc294fe1f.json => query-1f4c123edaf6faf50e1c07a797cd1d4794007904fef7a5e837ebfb1b502711a1.json} (70%) create mode 100644 core/lib/dal/migrations/20240315172816_drop_not_null_verifier.down.sql create mode 100644 core/lib/dal/migrations/20240315172816_drop_not_null_verifier.up.sql diff --git a/core/lib/dal/.sqlx/query-136569d7eb4037fd77e0fac2246c68e8e15a831f1a45dc3b2240d5c6809d5ef2.json b/core/lib/dal/.sqlx/query-136569d7eb4037fd77e0fac2246c68e8e15a831f1a45dc3b2240d5c6809d5ef2.json index fc33c969303..22d29f0f4d8 100644 --- a/core/lib/dal/.sqlx/query-136569d7eb4037fd77e0fac2246c68e8e15a831f1a45dc3b2240d5c6809d5ef2.json +++ b/core/lib/dal/.sqlx/query-136569d7eb4037fd77e0fac2246c68e8e15a831f1a45dc3b2240d5c6809d5ef2.json @@ -73,7 +73,7 @@ false, false, false, - false, + true, true, false ] diff --git a/core/lib/dal/.sqlx/query-19545806b8f772075096e69f8665d98a3d9f7df162ae22a98c3c7620fcd13bd2.json b/core/lib/dal/.sqlx/query-19545806b8f772075096e69f8665d98a3d9f7df162ae22a98c3c7620fcd13bd2.json index 3273d9654aa..fe7af657ba5 100644 --- a/core/lib/dal/.sqlx/query-19545806b8f772075096e69f8665d98a3d9f7df162ae22a98c3c7620fcd13bd2.json +++ b/core/lib/dal/.sqlx/query-19545806b8f772075096e69f8665d98a3d9f7df162ae22a98c3c7620fcd13bd2.json @@ -71,7 +71,7 @@ false, false, false, - false, + true, true, false ] diff --git a/core/lib/dal/.sqlx/query-0a3cb11f5bdcb8da31dbd4e3016fced141fb29dd8b6c32dd2dc3452dc294fe1f.json b/core/lib/dal/.sqlx/query-1f4c123edaf6faf50e1c07a797cd1d4794007904fef7a5e837ebfb1b502711a1.json similarity index 70% rename from core/lib/dal/.sqlx/query-0a3cb11f5bdcb8da31dbd4e3016fced141fb29dd8b6c32dd2dc3452dc294fe1f.json rename to core/lib/dal/.sqlx/query-1f4c123edaf6faf50e1c07a797cd1d4794007904fef7a5e837ebfb1b502711a1.json index 854e34b4f18..58780d59a3b 100644 --- a/core/lib/dal/.sqlx/query-0a3cb11f5bdcb8da31dbd4e3016fced141fb29dd8b6c32dd2dc3452dc294fe1f.json +++ b/core/lib/dal/.sqlx/query-1f4c123edaf6faf50e1c07a797cd1d4794007904fef7a5e837ebfb1b502711a1.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\n INSERT INTO\n protocol_versions (\n id,\n timestamp,\n recursion_scheduler_level_vk_hash,\n recursion_node_level_vk_hash,\n recursion_leaf_level_vk_hash,\n recursion_circuits_set_vks_hash,\n bootloader_code_hash,\n default_account_code_hash,\n verifier_address,\n upgrade_tx_hash,\n created_at\n )\n VALUES\n ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, NOW())\n ", + "query": "\n INSERT INTO\n protocol_versions (\n id,\n timestamp,\n recursion_scheduler_level_vk_hash,\n recursion_node_level_vk_hash,\n recursion_leaf_level_vk_hash,\n recursion_circuits_set_vks_hash,\n bootloader_code_hash,\n default_account_code_hash,\n upgrade_tx_hash,\n created_at\n )\n VALUES\n ($1, $2, $3, $4, $5, $6, $7, $8, $9, NOW())\n ", "describe": { "columns": [], "parameters": { @@ -13,11 +13,10 @@ "Bytea", "Bytea", "Bytea", - "Bytea", "Bytea" ] }, "nullable": [] }, - "hash": "0a3cb11f5bdcb8da31dbd4e3016fced141fb29dd8b6c32dd2dc3452dc294fe1f" + "hash": "1f4c123edaf6faf50e1c07a797cd1d4794007904fef7a5e837ebfb1b502711a1" } diff --git a/core/lib/dal/.sqlx/query-99acb091650478fe0feb367b1d64561347b81f8931cc2addefa907c9aa9355e6.json b/core/lib/dal/.sqlx/query-99acb091650478fe0feb367b1d64561347b81f8931cc2addefa907c9aa9355e6.json index 2aa6a538125..2699d19e9e4 100644 --- a/core/lib/dal/.sqlx/query-99acb091650478fe0feb367b1d64561347b81f8931cc2addefa907c9aa9355e6.json +++ b/core/lib/dal/.sqlx/query-99acb091650478fe0feb367b1d64561347b81f8931cc2addefa907c9aa9355e6.json @@ -73,7 +73,7 @@ false, false, false, - false, + true, true, false ] diff --git a/core/lib/dal/migrations/20240315172816_drop_not_null_verifier.down.sql b/core/lib/dal/migrations/20240315172816_drop_not_null_verifier.down.sql new file mode 100644 index 00000000000..83e1c52257e --- /dev/null +++ b/core/lib/dal/migrations/20240315172816_drop_not_null_verifier.down.sql @@ -0,0 +1,2 @@ +ALTER TABLE protocol_versions + ALTER COLUMN verifier_address SET NOT NULL; diff --git a/core/lib/dal/migrations/20240315172816_drop_not_null_verifier.up.sql b/core/lib/dal/migrations/20240315172816_drop_not_null_verifier.up.sql new file mode 100644 index 00000000000..002bdf709c8 --- /dev/null +++ b/core/lib/dal/migrations/20240315172816_drop_not_null_verifier.up.sql @@ -0,0 +1,2 @@ +ALTER TABLE protocol_versions + ALTER COLUMN verifier_address DROP NOT NULL; diff --git a/core/lib/dal/src/models/storage_protocol_version.rs b/core/lib/dal/src/models/storage_protocol_version.rs index 6eb6e94b003..09efaabd68f 100644 --- a/core/lib/dal/src/models/storage_protocol_version.rs +++ b/core/lib/dal/src/models/storage_protocol_version.rs @@ -5,7 +5,7 @@ use zksync_contracts::BaseSystemContractsHashes; use zksync_types::{ api, protocol_version::{self, L1VerifierConfig, ProtocolUpgradeTx, VerifierParams}, - Address, H256, + H256, }; #[derive(sqlx::FromRow)] @@ -18,7 +18,8 @@ pub struct StorageProtocolVersion { pub recursion_circuits_set_vks_hash: Vec, pub bootloader_code_hash: Vec, pub default_account_code_hash: Vec, - pub verifier_address: Vec, + // deprecated + pub verifier_address: Option>, pub created_at: NaiveDateTime, pub upgrade_tx_hash: Option>, } @@ -50,7 +51,6 @@ pub(crate) fn protocol_version_from_storage( bootloader: H256::from_slice(&storage_version.bootloader_code_hash), default_aa: H256::from_slice(&storage_version.default_account_code_hash), }, - verifier_address: Address::from_slice(&storage_version.verifier_address), tx, } } diff --git a/core/lib/dal/src/protocol_versions_dal.rs b/core/lib/dal/src/protocol_versions_dal.rs index 6ddb533cb9e..5a9a973893c 100644 --- a/core/lib/dal/src/protocol_versions_dal.rs +++ b/core/lib/dal/src/protocol_versions_dal.rs @@ -4,7 +4,7 @@ use anyhow::Context as _; use zksync_contracts::{BaseSystemContracts, BaseSystemContractsHashes}; use zksync_types::{ protocol_version::{L1VerifierConfig, ProtocolUpgradeTx, ProtocolVersion, VerifierParams}, - Address, ProtocolVersionId, H256, + ProtocolVersionId, H256, }; use crate::{ @@ -24,7 +24,6 @@ impl ProtocolVersionsDal<'_, '_> { timestamp: u64, l1_verifier_config: L1VerifierConfig, base_system_contracts_hashes: BaseSystemContractsHashes, - verifier_address: Address, tx_hash: Option, ) { sqlx::query!( @@ -39,12 +38,11 @@ impl ProtocolVersionsDal<'_, '_> { recursion_circuits_set_vks_hash, bootloader_code_hash, default_account_code_hash, - verifier_address, upgrade_tx_hash, created_at ) VALUES - ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, NOW()) + ($1, $2, $3, $4, $5, $6, $7, $8, $9, NOW()) "#, id as i32, timestamp as i64, @@ -65,7 +63,6 @@ impl ProtocolVersionsDal<'_, '_> { .as_bytes(), base_system_contracts_hashes.bootloader.as_bytes(), base_system_contracts_hashes.default_aa.as_bytes(), - verifier_address.as_bytes(), tx_hash.as_ref().map(H256::as_bytes), ) .execute(self.storage.conn()) @@ -91,7 +88,6 @@ impl ProtocolVersionsDal<'_, '_> { version.timestamp, version.l1_verifier_config, version.base_system_contracts_hashes, - version.verifier_address, tx_hash, ) .await; diff --git a/core/lib/types/src/protocol_version.rs b/core/lib/types/src/protocol_version.rs index 0c515c878db..b204ecc01db 100644 --- a/core/lib/types/src/protocol_version.rs +++ b/core/lib/types/src/protocol_version.rs @@ -688,8 +688,6 @@ pub struct ProtocolVersion { pub l1_verifier_config: L1VerifierConfig, /// Hashes of base system contracts (bootloader and default account) pub base_system_contracts_hashes: BaseSystemContractsHashes, - /// Verifier contract address on L1 - pub verifier_address: Address, /// L2 Upgrade transaction. pub tx: Option, } @@ -719,7 +717,6 @@ impl ProtocolVersion { .default_account_code_hash .unwrap_or(self.base_system_contracts_hashes.default_aa), }, - verifier_address: upgrade.verifier_address.unwrap_or(self.verifier_address), tx: upgrade.tx, } } diff --git a/core/lib/zksync_core/src/genesis.rs b/core/lib/zksync_core/src/genesis.rs index 6a70a796cd4..cfbdee8ed3f 100644 --- a/core/lib/zksync_core/src/genesis.rs +++ b/core/lib/zksync_core/src/genesis.rs @@ -38,7 +38,6 @@ pub struct GenesisParams { pub protocol_version: ProtocolVersionId, pub base_system_contracts: BaseSystemContracts, pub system_contracts: Vec, - pub first_verifier_address: Address, pub first_l1_verifier_config: L1VerifierConfig, } @@ -53,7 +52,6 @@ impl GenesisParams { base_system_contracts: BaseSystemContracts::load_from_disk(), system_contracts: get_system_smart_contracts(), first_l1_verifier_config: L1VerifierConfig::default(), - first_verifier_address: Address::zero(), } } } @@ -82,7 +80,6 @@ pub async fn ensure_genesis_state( protocol_version, base_system_contracts, system_contracts, - first_verifier_address, first_l1_verifier_config, } = genesis_params; @@ -96,7 +93,6 @@ pub async fn ensure_genesis_state( base_system_contracts, system_contracts, *first_l1_verifier_config, - *first_verifier_address, ) .await?; tracing::info!("chain_schema_genesis is complete"); @@ -295,14 +291,12 @@ pub(crate) async fn create_genesis_l1_batch( base_system_contracts: &BaseSystemContracts, system_contracts: &[DeployedContract], l1_verifier_config: L1VerifierConfig, - verifier_address: Address, ) -> anyhow::Result<()> { let version = ProtocolVersion { id: protocol_version, timestamp: 0, l1_verifier_config, base_system_contracts_hashes: base_system_contracts.hashes(), - verifier_address, tx: None, }; @@ -478,7 +472,6 @@ mod tests { base_system_contracts: BaseSystemContracts::load_from_disk(), system_contracts: get_system_smart_contracts(), first_l1_verifier_config: L1VerifierConfig::default(), - first_verifier_address: Address::random(), }; ensure_genesis_state(&mut conn, L2ChainId::from(270), ¶ms) .await @@ -511,7 +504,6 @@ mod tests { base_system_contracts: BaseSystemContracts::load_from_disk(), system_contracts: get_system_smart_contracts(), first_l1_verifier_config: L1VerifierConfig::default(), - first_verifier_address: Address::random(), }; ensure_genesis_state(&mut conn, L2ChainId::max(), ¶ms) .await diff --git a/core/lib/zksync_core/src/lib.rs b/core/lib/zksync_core/src/lib.rs index 86d9df66010..988631f5717 100644 --- a/core/lib/zksync_core/src/lib.rs +++ b/core/lib/zksync_core/src/lib.rs @@ -179,7 +179,6 @@ pub async fn genesis_init( protocol_version: ProtocolVersionId::latest(), base_system_contracts: BaseSystemContracts::load_from_disk(), system_contracts: get_system_smart_contracts(), - first_verifier_address: contracts_config.verifier_addr, first_l1_verifier_config, }, ) diff --git a/core/lib/zksync_core/src/state_keeper/batch_executor/tests/tester.rs b/core/lib/zksync_core/src/state_keeper/batch_executor/tests/tester.rs index 4769dc8037c..cfcd1caad8b 100644 --- a/core/lib/zksync_core/src/state_keeper/batch_executor/tests/tester.rs +++ b/core/lib/zksync_core/src/state_keeper/batch_executor/tests/tester.rs @@ -171,7 +171,6 @@ impl Tester { &BASE_SYSTEM_CONTRACTS, &get_system_smart_contracts(), Default::default(), - Default::default(), ) .await .unwrap(); diff --git a/core/lib/zksync_core/src/state_keeper/io/tests/tester.rs b/core/lib/zksync_core/src/state_keeper/io/tests/tester.rs index 489b068d320..db1007475ec 100644 --- a/core/lib/zksync_core/src/state_keeper/io/tests/tester.rs +++ b/core/lib/zksync_core/src/state_keeper/io/tests/tester.rs @@ -149,7 +149,6 @@ impl Tester { &self.base_system_contracts, &get_system_smart_contracts(), L1VerifierConfig::default(), - Address::zero(), ) .await .unwrap(); diff --git a/core/lib/zksync_core/src/sync_layer/external_io.rs b/core/lib/zksync_core/src/sync_layer/external_io.rs index a35001cb50b..5152e7361d7 100644 --- a/core/lib/zksync_core/src/sync_layer/external_io.rs +++ b/core/lib/zksync_core/src/sync_layer/external_io.rs @@ -177,8 +177,6 @@ impl ExternalIO { protocol_version.timestamp, protocol_version.verification_keys_hashes, protocol_version.base_system_contracts, - // Verifier is not used in the external node, so we can pass an empty - Default::default(), protocol_version.l2_system_upgrade_tx_hash, ) .await; diff --git a/core/lib/zksync_core/src/sync_layer/genesis.rs b/core/lib/zksync_core/src/sync_layer/genesis.rs index 021d828c966..c4a0897c36b 100644 --- a/core/lib/zksync_core/src/sync_layer/genesis.rs +++ b/core/lib/zksync_core/src/sync_layer/genesis.rs @@ -3,8 +3,7 @@ use zksync_contracts::{BaseSystemContracts, BaseSystemContractsHashes, SystemCon use zksync_dal::StorageProcessor; use zksync_types::{ block::DeployedContract, protocol_version::L1VerifierConfig, - system_contracts::get_system_smart_contracts, AccountTreeId, Address, L1BatchNumber, L2ChainId, - H256, + system_contracts::get_system_smart_contracts, AccountTreeId, L1BatchNumber, L2ChainId, H256, }; use super::client::MainNodeClient; @@ -87,14 +86,12 @@ async fn create_genesis_params(client: &dyn MainNodeClient) -> anyhow::Result