From d17d212c2400beb11f24af39bb0dc1fff38370f8 Mon Sep 17 00:00:00 2001 From: line-6000 <154492442+line-6000@users.noreply.github.com> Date: Tue, 28 Apr 2026 15:28:00 +0800 Subject: [PATCH] change tron scan logic --- src/model/service/task_service.go | 23 ++++++++++++++++++++++- src/task/listen.go | 13 ++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/model/service/task_service.go b/src/model/service/task_service.go index 97ce01e..6c15789 100644 --- a/src/model/service/task_service.go +++ b/src/model/service/task_service.go @@ -216,8 +216,29 @@ func TryProcessEvmERC20Transfer(chainNetwork string, contract common.Address, to log.Sugar.Infof("[%s-%s][%s] skip non-positive or nil amount", net, tokenSym, walletAddr) return } + + chainTokens, err := data.ListChainTokens(chainNetwork) + if err != nil { + log.Sugar.Warnf("[%s-%s] load chain tokens: %v", net, tokenSym, err) + return + } + var tokenConfig *mdb.ChainToken + for _, t := range chainTokens { + if strings.EqualFold(t.Symbol, tokenSym) { + tokenConfig = &t + break + } + } + if tokenConfig == nil || !tokenConfig.Enabled { + log.Sugar.Warnf("[%s-%s] token not enabled or configured in chain_tokens", net, tokenSym) + return + } + + pow := decimal.New(1, int32(tokenConfig.Decimals)) + log.Sugar.Warnf("tokenConfig.Decimals %d pow %s", tokenConfig.Decimals, pow.String()) + decimalQuant := decimal.NewFromBigInt(rawValue, 0) - amount := math.MustParsePrecFloat64(decimalQuant.Div(decimal.NewFromInt(1_000_000)).InexactFloat64(), 2) + amount := math.MustParsePrecFloat64(decimalQuant.Div(pow).InexactFloat64(), 2) if amount <= 0 { log.Sugar.Warnf("[%s-%s][%s] skip non-positive amount %.2f", net, tokenSym, walletAddr, amount) return diff --git a/src/task/listen.go b/src/task/listen.go index 36b4a05..96d14e7 100644 --- a/src/task/listen.go +++ b/src/task/listen.go @@ -16,13 +16,24 @@ func Start() { go StartTronBlockScannerListener() c := cron.New() + + // Solana polling + _, err := c.AddJob("@every 5s", ListenSolJob{}) + if err != nil { + log.Sugar.Errorf("[task] Failed to add ListenSolJob: %v", err) + return + } + + log.Sugar.Info("[task] ListenSolJob scheduled successfully (@every 5s)") + // RPC node health checks - _, err := c.AddJob("@every 30s", RpcHealthJob{}) + _, err = c.AddJob("@every 30s", RpcHealthJob{}) if err != nil { log.Sugar.Errorf("[task] Failed to add RpcHealthJob: %v", err) return } log.Sugar.Info("[task] RpcHealthJob scheduled successfully (@every 30s)") + c.Start() log.Sugar.Info("[task] Task scheduler started") }