diff --git a/rollup/internal/controller/relayer/l1_relayer.go b/rollup/internal/controller/relayer/l1_relayer.go index 2b7265c55..f5ef0fb36 100644 --- a/rollup/internal/controller/relayer/l1_relayer.go +++ b/rollup/internal/controller/relayer/l1_relayer.go @@ -154,22 +154,22 @@ func (r *Layer1Relayer) ProcessGasPriceOracle() { // include the token exchange rate in the fee data if alternative gas token enabled if r.cfg.GasOracleConfig.AlternativeGasTokenConfig != nil && r.cfg.GasOracleConfig.AlternativeGasTokenConfig.Enabled { - switch r.cfg.GasOracleConfig.AlternativeGasTokenConfig.Mode { // The exchange rate represent the number of native token on L1 required to exchange for 1 native token on L2. + var exchangeRate float64 + switch r.cfg.GasOracleConfig.AlternativeGasTokenConfig.Mode { case config.FIXED: - baseFee = uint64(math.Ceil(float64(baseFee) / r.cfg.GasOracleConfig.AlternativeGasTokenConfig.FixedExchangeRate)) - blobBaseFee = uint64(math.Ceil(float64(blobBaseFee) / r.cfg.GasOracleConfig.AlternativeGasTokenConfig.FixedExchangeRate)) + exchangeRate = r.cfg.GasOracleConfig.AlternativeGasTokenConfig.FixedExchangeRate case config.BINANCE_API: - exchangeRate, err := rutils.GetExchangeRateFromBinanceApi(r.cfg.GasOracleConfig.AlternativeGasTokenConfig.ApiEndpoint) + exchangeRate, err = rutils.GetExchangeRateFromBinanceApi(r.cfg.GasOracleConfig.AlternativeGasTokenConfig.ApiEndpoint) if err != nil { log.Error("Failed to get gas token exchange rate from Binance api", "endpoint", r.cfg.GasOracleConfig.AlternativeGasTokenConfig.ApiEndpoint, "err", err) } - baseFee = uint64(math.Ceil(float64(baseFee) / exchangeRate)) - blobBaseFee = uint64(math.Ceil(float64(blobBaseFee) / exchangeRate)) default: log.Error("Invalid alternative gas token mode", "mode", r.cfg.GasOracleConfig.AlternativeGasTokenConfig.Mode) return } + baseFee = uint64(math.Ceil(float64(baseFee) / exchangeRate)) + blobBaseFee = uint64(math.Ceil(float64(blobBaseFee) / exchangeRate)) } if r.shouldUpdateGasOracle(baseFee, blobBaseFee, isCurie) { diff --git a/rollup/internal/controller/relayer/l2_relayer.go b/rollup/internal/controller/relayer/l2_relayer.go index bf46cd27d..15473e788 100644 --- a/rollup/internal/controller/relayer/l2_relayer.go +++ b/rollup/internal/controller/relayer/l2_relayer.go @@ -328,20 +328,22 @@ func (r *Layer2Relayer) ProcessGasPriceOracle() { // include the token exchange rate in the fee data if alternative gas token enabled if r.cfg.GasOracleConfig.AlternativeGasTokenConfig != nil && r.cfg.GasOracleConfig.AlternativeGasTokenConfig.Enabled { - switch r.cfg.GasOracleConfig.AlternativeGasTokenConfig.Mode { // The exchange rate represent the number of native token on L1 required to exchange for 1 native token on L2. + var exchangeRate float64 + switch r.cfg.GasOracleConfig.AlternativeGasTokenConfig.Mode { case config.FIXED: - suggestGasPriceUint64 = uint64(math.Ceil(float64(suggestGasPriceUint64) * r.cfg.GasOracleConfig.AlternativeGasTokenConfig.FixedExchangeRate)) + exchangeRate = r.cfg.GasOracleConfig.AlternativeGasTokenConfig.FixedExchangeRate case config.BINANCE_API: - exchangeRate, err := rutils.GetExchangeRateFromBinanceApi(r.cfg.GasOracleConfig.AlternativeGasTokenConfig.ApiEndpoint) + exchangeRate, err = rutils.GetExchangeRateFromBinanceApi(r.cfg.GasOracleConfig.AlternativeGasTokenConfig.ApiEndpoint) if err != nil { log.Error("Failed to get gas token exchange rate from Binance api", "endpoint", r.cfg.GasOracleConfig.AlternativeGasTokenConfig.ApiEndpoint, "err", err) } - suggestGasPriceUint64 = uint64(math.Ceil(float64(suggestGasPriceUint64) * exchangeRate)) + default: log.Error("Invalid alternative gas token mode", "mode", r.cfg.GasOracleConfig.AlternativeGasTokenConfig.Mode) return } + suggestGasPriceUint64 = uint64(math.Ceil(float64(suggestGasPriceUint64) * exchangeRate)) suggestGasPrice = new(big.Int).SetUint64(suggestGasPriceUint64) } diff --git a/rollup/internal/utils/exchange_rate.go b/rollup/internal/utils/exchange_rate.go index 781a63e43..ebbf7e840 100644 --- a/rollup/internal/utils/exchange_rate.go +++ b/rollup/internal/utils/exchange_rate.go @@ -18,7 +18,12 @@ func GetExchangeRateFromBinanceApi(endpoint string) (float64, error) { if err != nil { return 0, fmt.Errorf("error making HTTP request: %w", err) } - defer resp.Body.Close() + defer func() { + err := resp.Body.Close() + if err != nil { + fmt.Println("error closing response body:", err) + } + }() // check for successful response if resp.StatusCode != http.StatusOK { @@ -42,11 +47,7 @@ func GetExchangeRateFromBinanceApi(endpoint string) (float64, error) { price, err := strconv.ParseFloat(data.Price, 64) if err != nil { return 0, fmt.Errorf("error parsing price string: %w", err) - } - - if err := resp.Body.Close(); err != nil { - return 0, fmt.Errorf("error closing response body: %v", err) - } + } return price, nil }