From 36f32f73f5acaecaf4ea90e8b0ceaa2b4cef7935 Mon Sep 17 00:00:00 2001 From: Francesco Dainese Date: Wed, 10 Apr 2024 21:51:55 +0200 Subject: [PATCH] fix(zkvm:create): fetch all factory deps --- crates/cheatcodes/src/inspector.rs | 1 + crates/zksync/core/src/vm/runner.rs | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/crates/cheatcodes/src/inspector.rs b/crates/cheatcodes/src/inspector.rs index 5e9454454..310ab7a30 100644 --- a/crates/cheatcodes/src/inspector.rs +++ b/crates/cheatcodes/src/inspector.rs @@ -1690,6 +1690,7 @@ impl Inspector for Cheatcodes { if let Ok(result) = foundry_zksync_core::vm::create::<_, DatabaseError>( call, zk_contract, + &self.dual_compiled_contracts, data.env, data.db, &mut data.journaled_state, diff --git a/crates/zksync/core/src/vm/runner.rs b/crates/zksync/core/src/vm/runner.rs index 06b4ded44..a58e3df90 100644 --- a/crates/zksync/core/src/vm/runner.rs +++ b/crates/zksync/core/src/vm/runner.rs @@ -16,7 +16,7 @@ use foundry_common::{ console::HARDHAT_CONSOLE_ADDRESS, fmt::ConsoleFmt, patch_hh_console_selector, Console, HardhatConsole, }; -use foundry_zksync_compiler::DualCompiledContract; +use foundry_zksync_compiler::{DualCompiledContract, FindContract}; use std::{collections::HashMap, fmt::Debug, str::FromStr, sync::Arc}; use crate::{fix_l2_gas_limit, fix_l2_gas_price}; @@ -164,6 +164,7 @@ where pub fn create<'a, DB, E>( call: &CreateInputs, contract: &DualCompiledContract, + dual_compiled_contracts: &[DualCompiledContract], env: &'a mut Env, db: &'a mut DB, journaled_state: &'a mut JournaledState, @@ -177,7 +178,8 @@ where let constructor_input = call.init_code[contract.evm_bytecode.len()..].to_vec(); let caller = env.tx.caller; let calldata = encode_create_params(&call.scheme, contract.zk_bytecode_hash, constructor_input); - let factory_deps = vec![contract.zk_deployed_bytecode.clone()]; + let factory_deps = + dual_compiled_contracts.fetch_all_factory_deps(&contract).into_iter().collect(); let nonce = ZKVMData::new(db, journaled_state).get_tx_nonce(caller); let (gas_limit, max_fee_per_gas) = gas_params(env, db, journaled_state, caller);