From ec5dfc784addbc2b77e229fed8c0a35e56c4219f Mon Sep 17 00:00:00 2001 From: Mohammed Sohail Date: Thu, 18 Apr 2024 13:20:04 +0800 Subject: [PATCH] fix: missing pool token registry bootstrapper --- internal/cache/cache.go | 26 +++++++++++++++++++++++++- internal/processor/block.go | 13 ++++++++----- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/internal/cache/cache.go b/internal/cache/cache.go index 68fcafc..4a3e788 100644 --- a/internal/cache/cache.go +++ b/internal/cache/cache.go @@ -8,6 +8,7 @@ import ( "github.com/grassrootseconomics/celo-tracker/internal/chain" "github.com/grassrootseconomics/celoutils/v2" "github.com/grassrootseconomics/w3-celo" + "github.com/grassrootseconomics/w3-celo/module/eth" ) type ( @@ -26,6 +27,10 @@ type ( } ) +var ( + tokenRegistryFunc = w3.MustNewFunc("tokenRegistry()", "address") +) + func New(o CacheOpts) (Cache, error) { var ( cache Cache @@ -68,9 +73,28 @@ func New(o CacheOpts) (Cache, error) { for _, pool := range pools { cache.Add(pool.Hex()) + + var ( + poolTokenRegistry common.Address + ) + err := o.Chain.Provider.Client.CallCtx( + ctx, + eth.CallFunc(pool, tokenRegistryFunc).Returns(&poolTokenRegistry), + ) + if err != nil { + return nil, err + } + + poolTokens, err := o.Chain.GetAllTokensFromTokenIndex(ctx, poolTokenRegistry) + if err != nil { + return nil, err + } + + for _, token := range poolTokens { + cache.Add(token.Hex()) + } } } - } o.Logg.Debug("cache bootstrap complete", "cached_addresses", cache.Size()) diff --git a/internal/processor/block.go b/internal/processor/block.go index d16061b..00be435 100644 --- a/internal/processor/block.go +++ b/internal/processor/block.go @@ -26,14 +26,17 @@ func (p *Processor) processBlock(ctx context.Context, block types.Block) error { for i, receipt := range receiptsResp { if receipt.Status > 0 { for _, log := range receipt.Logs { - if err := p.handleLogs(ctx, log); err != nil { - p.logg.Error("hanlder error", "error", err) + if p.cache.Exists(log.Address.Hex()) { + if err := p.handleLogs(ctx, log); err != nil { + p.logg.Error("hanlder error", "error", err) + } } } } else { - revertReason, _ := p.chain.GetRevertReason(ctx, receipt.TxHash, receipt.BlockNumber) - p.logg.Debug("tx reverted", "hash", receipt.TxHash, "revert_reason", revertReason, "input_data", common.Bytes2Hex(txs[i].Data())) - + if p.cache.Exists(txs[i].To().Hex()) { + revertReason, _ := p.chain.GetRevertReason(ctx, receipt.TxHash, receipt.BlockNumber) + p.logg.Debug("tx reverted", "hash", receipt.TxHash, "revert_reason", revertReason, "input_data", common.Bytes2Hex(txs[i].Data())) + } } }