From a1dbfa3cc50f47457ecb7c600af891fc918f5200 Mon Sep 17 00:00:00 2001 From: fborello-lambda Date: Fri, 20 Sep 2024 15:04:51 -0300 Subject: [PATCH] wip: investigate how to set gas_per_pubdata dynamically --- src/eip712/transaction_request.rs | 3 ++- src/zk_middleware.rs | 2 +- src/zk_wallet.rs | 13 +++++++------ tests/common/mod.rs | 2 +- tests/deploy.rs | 9 ++++++--- 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/eip712/transaction_request.rs b/src/eip712/transaction_request.rs index bf896af..546f87f 100644 --- a/src/eip712/transaction_request.rs +++ b/src/eip712/transaction_request.rs @@ -316,7 +316,8 @@ impl TryFrom for Eip712TransactionRequest { } factory_deps.push(request.contract_bytecode.clone()); factory_deps - }); + }) + .gas_per_pubdata(U256::from(50000_u32)); let contract_deployer = Abi::load(BufReader::new( File::open(contract_deployer_path).map_err(|e| { diff --git a/src/zk_middleware.rs b/src/zk_middleware.rs index c67ae0a..1d153aa 100644 --- a/src/zk_middleware.rs +++ b/src/zk_middleware.rs @@ -31,7 +31,7 @@ use ethers::{ }; use crate::{ - eip712::{Eip712Meta, Eip712Transaction, Eip712TransactionRequest}, + eip712::{Eip712Transaction, Eip712TransactionRequest}, types::L1TxOverrides, utils, }; diff --git a/src/zk_wallet.rs b/src/zk_wallet.rs index e2cf6e2..6494ce9 100644 --- a/src/zk_wallet.rs +++ b/src/zk_wallet.rs @@ -525,7 +525,7 @@ where transaction: Eip712TransactionRequest, ) -> Result { let mut request: Eip712TransactionRequest = transaction; - let gas_price = self.l2_provider().get_gas_price().await?; + request = request .from(self.l2_address()) .chain_id(self.l2_provider().get_chainid().await?) @@ -533,16 +533,17 @@ where self.l2_provider() .get_transaction_count(self.l2_address(), None) .await?, - ) - .gas_price(gas_price) - .max_fee_per_gas(gas_price); + ); let custom_data = request.clone().custom_data; let fee = self.l2_provider().estimate_fee(request.clone()).await?; + let gas = self.l2_provider().zk_estimate_gas(request.clone()).await?; + let gas_price = self.l2_provider().get_gas_price().await?; request = request .max_priority_fee_per_gas(fee.max_priority_fee_per_gas) - .gas_limit(fee.gas_limit) - .max_fee_per_gas(fee.max_fee_per_gas); + .gas_limit(gas) + .max_fee_per_gas(fee.max_fee_per_gas) + .gas_price(gas_price); let signable_data: Eip712Transaction = request.clone().try_into().map_err(|e| { ZKWalletError::SendEIP712(format!("error converting deploy to eip 712 {e}")) })?; diff --git a/tests/common/mod.rs b/tests/common/mod.rs index 047e3fe..9b993c0 100644 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -46,7 +46,7 @@ pub async fn signer( Arc::new(SignerMiddleware::, LocalWallet>::new( provider, LocalWallet::from_str(&std::env::var("PRIVATE_KEY").unwrap_or( - "0x385c546456b6a603a1cfcaa9ec9494ba4832da08dd6bcf4de9a71e4a01b74924".to_owned(), + "0x850683b40d4a740aa6e745f889a6fdc8327be76e122f5aba645a5b02d0248db8".to_owned(), )) .unwrap() .with_chain_id(chain_id), diff --git a/tests/deploy.rs b/tests/deploy.rs index 3944528..0f76168 100644 --- a/tests/deploy.rs +++ b/tests/deploy.rs @@ -1,8 +1,7 @@ use std::{fs::File, path::PathBuf}; -use common::{ - l1_signer, l2_signer, CompiledContract, -}; +use common::{l1_signer, l2_signer, CompiledContract}; +use ethers::utils::parse_ether; use zksync_ethers_rs::{ eip712::{DeployRequest, Eip712TransactionRequest}, zk_wallet::ZKWallet, @@ -12,6 +11,10 @@ mod common; #[tokio::test] async fn test_deploy() { let zk_wallet = ZKWallet::new(l1_signer().await, l2_signer().await); + zk_wallet + .deposit_base_token(parse_ether("10").unwrap()) + .await + .unwrap(); let mut contract_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")); contract_path.push("abi/test_contracts/storage_combined.json"); let contract: CompiledContract =