Skip to content
This repository was archived by the owner on Apr 10, 2024. It is now read-only.

Commit 4029375

Browse files
authored
fix: handle fetching conversion rate for same token (#38)
* Expand average strategy to support case when base and foreign currency are equal * add logs for errors
1 parent 0ec622a commit 4029375

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

api/api.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ func (h *Handler) getRate(c *gin.Context) {
7171

7272
gp, err := h.consensus.FilterLocalGasPriceData(h.gasPriceStore, toDomain.Name)
7373
if err != nil {
74+
h.log.Errorf("get gasprice process failed: %v", err)
7475
ginErrorReturn(c, http.StatusInternalServerError, newReturnErrorResp(&oracleErrors.InternalServerError, err))
7576
return
7677
}
@@ -81,13 +82,15 @@ func (h *Handler) getRate(c *gin.Context) {
8182
toDomain.BaseCurrencySymbol,
8283
fromDomain.BaseCurrencySymbol)
8384
if err != nil {
85+
h.log.Errorf("calculate ber process failed: %v", err)
8486
ginErrorReturn(c, http.StatusInternalServerError, newReturnErrorResp(&oracleErrors.InternalServerError, err))
8587
return
8688
}
8789
h.log.Debugf("base rate calculation: to: %s, from: %s\n", toDomain.BaseCurrencySymbol, fromDomain.BaseCurrencySymbol)
8890

8991
ter, err := h.calculateTokenRate(resource, ber, fromDomain, toDomain)
9092
if err != nil {
93+
h.log.Errorf("calculate ter process failed: %v", err)
9194
ginErrorReturn(c, http.StatusInternalServerError, newReturnErrorResp(&oracleErrors.InternalServerError, err))
9295
return
9396
}
@@ -108,6 +111,7 @@ func (h *Handler) getRate(c *gin.Context) {
108111
}
109112
rate.Signature, err = signature.RateSignature(h.conf, rate, h.identity, fromDomain.ID, resource.ID)
110113
if err != nil {
114+
h.log.Errorf("signature process failed: %v", err)
111115
ginErrorReturn(c, http.StatusInternalServerError, newReturnErrorResp(&oracleErrors.InternalServerError, err))
112116
return
113117
}

consensus/strategy/average.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"fmt"
99
"math"
1010
"strconv"
11+
"time"
1112

1213
"github.com/ChainSafe/sygma-fee-oracle/store"
1314
"github.com/ChainSafe/sygma-fee-oracle/types"
@@ -61,6 +62,15 @@ func (a *Average) GasPrice(store *store.GasPriceStore, domainName string) (*type
6162
}
6263

6364
func (a *Average) ConversionRate(store *store.ConversionRateStore, base, foreign string) (*types.ConversionRate, error) {
65+
if base == foreign {
66+
return &types.ConversionRate{
67+
Base: base,
68+
Foreign: foreign,
69+
Rate: 1,
70+
Time: time.Now().Unix(),
71+
}, nil
72+
}
73+
6474
re, err := store.GetConversionRatesByCurrencyPair(base, foreign)
6575
if err != nil {
6676
return nil, err

0 commit comments

Comments
 (0)