@@ -216,8 +216,29 @@ func TryProcessEvmERC20Transfer(chainNetwork string, contract common.Address, to
216216 log .Sugar .Infof ("[%s-%s][%s] skip non-positive or nil amount" , net , tokenSym , walletAddr )
217217 return
218218 }
219+
220+ chainTokens , err := data .ListChainTokens (chainNetwork )
221+ if err != nil {
222+ log .Sugar .Warnf ("[%s-%s] load chain tokens: %v" , net , tokenSym , err )
223+ return
224+ }
225+ var tokenConfig * mdb.ChainToken
226+ for _ , t := range chainTokens {
227+ if strings .EqualFold (t .Symbol , tokenSym ) {
228+ tokenConfig = & t
229+ break
230+ }
231+ }
232+ if tokenConfig == nil || ! tokenConfig .Enabled {
233+ log .Sugar .Warnf ("[%s-%s] token not enabled or configured in chain_tokens" , net , tokenSym )
234+ return
235+ }
236+
237+ pow := decimal .New (1 , int32 (tokenConfig .Decimals ))
238+ log .Sugar .Warnf ("tokenConfig.Decimals %d pow %s" , tokenConfig .Decimals , pow .String ())
239+
219240 decimalQuant := decimal .NewFromBigInt (rawValue , 0 )
220- amount := math .MustParsePrecFloat64 (decimalQuant .Div (decimal . NewFromInt ( 1_000_000 ) ).InexactFloat64 (), 2 )
241+ amount := math .MustParsePrecFloat64 (decimalQuant .Div (pow ).InexactFloat64 (), 2 )
221242 if amount <= 0 {
222243 log .Sugar .Warnf ("[%s-%s][%s] skip non-positive amount %.2f" , net , tokenSym , walletAddr , amount )
223244 return
0 commit comments