@@ -36,6 +36,8 @@ func ValidateClientExchangeData(ctx context.Context, data code_data.Provider, pr
3636func validateCoreMintClientExchangeData (ctx context.Context , data code_data.Provider , proto * transactionpb.ExchangeData ) (bool , string , error ) {
3737 latestExchangeRateTime := GetLatestExchangeRateTime ()
3838
39+ coreMintQuarksPerUnit := common .GetMintQuarksPerUnit (common .CoreMintAccount )
40+
3941 clientRate := big .NewFloat (proto .ExchangeRate ).SetPrec (defaultPrecision )
4042 clientNativeAmount := big .NewFloat (proto .NativeAmount ).SetPrec (defaultPrecision )
4143 clientQuarks := big .NewFloat (float64 (proto .Quarks )).SetPrec (defaultPrecision )
@@ -52,8 +54,8 @@ func validateCoreMintClientExchangeData(ctx context.Context, data code_data.Prov
5254 nativeAmountLowerBound = nativeAmountErrorThreshold
5355 }
5456 nativeAmountUpperBound := new (big.Float ).Add (clientNativeAmount , nativeAmountErrorThreshold )
55- quarksLowerBound := new (big.Float ).Quo (nativeAmountLowerBound , clientRate )
56- quarksUpperBound := new (big.Float ).Quo (nativeAmountUpperBound , clientRate )
57+ quarksLowerBound := new (big.Float ).Mul ( new (big. Float ). Quo (nativeAmountLowerBound , clientRate ), big . NewFloat ( float64 ( coreMintQuarksPerUnit )) )
58+ quarksUpperBound := new (big.Float ).Mul ( new (big. Float ). Quo (nativeAmountUpperBound , clientRate ), big . NewFloat ( float64 ( coreMintQuarksPerUnit )) )
5759
5860 log := logrus .StandardLogger ().WithFields (logrus.Fields {
5961 "currency" : proto .Currency ,
@@ -63,8 +65,8 @@ func validateCoreMintClientExchangeData(ctx context.Context, data code_data.Prov
6365 "min_transfer_value" : minTransferValue ,
6466 "native_amount_lower_bound" : nativeAmountLowerBound ,
6567 "native_amount_upper_bound" : nativeAmountUpperBound ,
66- "quarks_lower_bound" : nativeAmountLowerBound ,
67- "quarks_upper_bound" : nativeAmountUpperBound ,
68+ "quarks_lower_bound" : quarksLowerBound ,
69+ "quarks_upper_bound" : quarksUpperBound ,
6870 })
6971
7072 if clientNativeAmount .Cmp (nativeAmountErrorThreshold ) < 0 {
@@ -91,6 +93,8 @@ func validateCoreMintClientExchangeData(ctx context.Context, data code_data.Prov
9193 isClientRateValid = true
9294 break
9395 }
96+
97+ log .WithField ("rate" , actualRate ).Info ("exchange rate doesn't match" )
9498 }
9599
96100 if ! isClientRateValid {
0 commit comments