From dc64c224746c66296b130b05c68d217bb75ecb03 Mon Sep 17 00:00:00 2001 From: sunce86 Date: Thu, 6 Mar 2025 10:17:50 +0100 Subject: [PATCH 1/2] Fix bug for additional Tip --- crates/driver/src/infra/blockchain/gas.rs | 37 ++++++++++++----------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/crates/driver/src/infra/blockchain/gas.rs b/crates/driver/src/infra/blockchain/gas.rs index 472051c93f..203b6af5fd 100644 --- a/crates/driver/src/infra/blockchain/gas.rs +++ b/crates/driver/src/infra/blockchain/gas.rs @@ -4,8 +4,10 @@ /// private submission networks are used. use { super::Error, - crate::infra::config::file::GasEstimatorType, - crate::{domain::eth, infra::mempool}, + crate::{ + domain::eth, + infra::{config::file::GasEstimatorType, mempool}, + }, ethcontract::dyns::DynWeb3, gas_estimation::{GasPriceEstimating, nativegasestimator::NativeGasEstimator}, std::sync::Arc, @@ -81,24 +83,25 @@ impl GasPriceEstimator { self.gas .estimate() .await - .map(|mut estimate| { - let estimate = match self.additional_tip { - Some((max_additional_tip, additional_tip_percentage)) => { - let additional_tip = max_additional_tip + .map(|estimate| { + let additional_tip = self + .additional_tip + .map(|(max_additional_tip, additional_tip_percentage)| { + max_additional_tip .to_f64_lossy() - .min(estimate.max_fee_per_gas * additional_tip_percentage); - estimate.max_fee_per_gas += additional_tip; - estimate.max_priority_fee_per_gas += additional_tip; - estimate - } - None => estimate, - }; + .min(estimate.max_fee_per_gas * additional_tip_percentage) + }) + .map(eth::U256::from_f64_lossy) + .unwrap_or(eth::U256::zero()); + + let tip = std::cmp::max( + self.min_priority_fee, + eth::U256::from_f64_lossy(estimate.max_priority_fee_per_gas), + ); + eth::GasPrice::new( self.max_fee_per_gas.into(), - std::cmp::max( - self.min_priority_fee.into(), - eth::U256::from_f64_lossy(estimate.max_priority_fee_per_gas).into(), - ), + (tip + additional_tip).into(), eth::U256::from_f64_lossy(estimate.base_fee_per_gas).into(), ) }) From aa73d01bc893110c3e25a05cb0ddd8e3f71d33be Mon Sep 17 00:00:00 2001 From: sunce86 Date: Thu, 6 Mar 2025 15:21:02 +0100 Subject: [PATCH 2/2] cr fixes --- crates/driver/src/infra/blockchain/gas.rs | 24 ++++++++++------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/crates/driver/src/infra/blockchain/gas.rs b/crates/driver/src/infra/blockchain/gas.rs index 203b6af5fd..a2e1b21a28 100644 --- a/crates/driver/src/infra/blockchain/gas.rs +++ b/crates/driver/src/infra/blockchain/gas.rs @@ -20,7 +20,7 @@ type AdditionalTip = (MaxAdditionalTip, AdditionalTipPercentage); pub struct GasPriceEstimator { //TODO: remove visibility once boundary is removed pub(super) gas: Arc, - additional_tip: Option, + additional_tip: AdditionalTip, max_fee_per_gas: eth::U256, min_priority_fee: eth::U256, } @@ -53,7 +53,8 @@ impl GasPriceEstimator { .. } => (max_additional_tip, additional_tip_percentage), }) - .next(); + .next() + .unwrap_or((eth::U256::zero(), 0.)); // Use the lowest max_fee_per_gas of all mempools as the max_fee_per_gas let max_fee_per_gas = mempools .iter() @@ -84,24 +85,19 @@ impl GasPriceEstimator { .estimate() .await .map(|estimate| { - let additional_tip = self - .additional_tip - .map(|(max_additional_tip, additional_tip_percentage)| { - max_additional_tip - .to_f64_lossy() - .min(estimate.max_fee_per_gas * additional_tip_percentage) - }) - .map(eth::U256::from_f64_lossy) - .unwrap_or(eth::U256::zero()); + let (max, percentage) = self.additional_tip; + let additional_tip = max + .to_f64_lossy() + .min(estimate.max_fee_per_gas * percentage); let tip = std::cmp::max( - self.min_priority_fee, - eth::U256::from_f64_lossy(estimate.max_priority_fee_per_gas), + self.min_priority_fee + eth::U256::from_f64_lossy(additional_tip), + eth::U256::from_f64_lossy(estimate.max_priority_fee_per_gas + additional_tip), ); eth::GasPrice::new( self.max_fee_per_gas.into(), - (tip + additional_tip).into(), + tip.into(), eth::U256::from_f64_lossy(estimate.base_fee_per_gas).into(), ) })