From 6099a23a7b4051753f4a62d662154aef6027d6b4 Mon Sep 17 00:00:00 2001 From: Mak Muftic Date: Tue, 14 Mar 2023 14:11:07 +0100 Subject: [PATCH 1/2] Expand average strategy to support case when base and foreign currency are equal --- consensus/strategy/average.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/consensus/strategy/average.go b/consensus/strategy/average.go index e0c36c8..978955b 100644 --- a/consensus/strategy/average.go +++ b/consensus/strategy/average.go @@ -8,6 +8,7 @@ import ( "fmt" "math" "strconv" + "time" "github.com/ChainSafe/sygma-fee-oracle/store" "github.com/ChainSafe/sygma-fee-oracle/types" @@ -61,6 +62,15 @@ func (a *Average) GasPrice(store *store.GasPriceStore, domainName string) (*type } func (a *Average) ConversionRate(store *store.ConversionRateStore, base, foreign string) (*types.ConversionRate, error) { + if base == foreign { + return &types.ConversionRate{ + Base: base, + Foreign: foreign, + Rate: 1, + Time: time.Now().Unix(), + }, nil + } + re, err := store.GetConversionRatesByCurrencyPair(base, foreign) if err != nil { return nil, err From f59f338849c6215fb7543883fe391bfdee5aab2a Mon Sep 17 00:00:00 2001 From: Mak Muftic Date: Wed, 15 Mar 2023 13:33:19 +0100 Subject: [PATCH 2/2] add logs for errors --- api/api.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/api/api.go b/api/api.go index c4c9fe4..528b435 100644 --- a/api/api.go +++ b/api/api.go @@ -71,6 +71,7 @@ func (h *Handler) getRate(c *gin.Context) { gp, err := h.consensus.FilterLocalGasPriceData(h.gasPriceStore, toDomain.Name) if err != nil { + h.log.Errorf("get gasprice process failed: %v", err) ginErrorReturn(c, http.StatusInternalServerError, newReturnErrorResp(&oracleErrors.InternalServerError, err)) return } @@ -81,6 +82,7 @@ func (h *Handler) getRate(c *gin.Context) { toDomain.BaseCurrencySymbol, fromDomain.BaseCurrencySymbol) if err != nil { + h.log.Errorf("calculate ber process failed: %v", err) ginErrorReturn(c, http.StatusInternalServerError, newReturnErrorResp(&oracleErrors.InternalServerError, err)) return } @@ -88,6 +90,7 @@ func (h *Handler) getRate(c *gin.Context) { ter, err := h.calculateTokenRate(resource, ber, fromDomain, toDomain) if err != nil { + h.log.Errorf("calculate ter process failed: %v", err) ginErrorReturn(c, http.StatusInternalServerError, newReturnErrorResp(&oracleErrors.InternalServerError, err)) return } @@ -108,6 +111,7 @@ func (h *Handler) getRate(c *gin.Context) { } rate.Signature, err = signature.RateSignature(h.conf, rate, h.identity, fromDomain.ID, resource.ID) if err != nil { + h.log.Errorf("signature process failed: %v", err) ginErrorReturn(c, http.StatusInternalServerError, newReturnErrorResp(&oracleErrors.InternalServerError, err)) return }