From f981007e71d976e10d54ae3a92633937a97f4981 Mon Sep 17 00:00:00 2001 From: Mohammed Sohail Date: Thu, 18 Apr 2024 17:28:45 +0800 Subject: [PATCH] update handler interface. Add Name method --- config.toml | 2 +- internal/handler/handler.go | 3 +++ internal/handler/token_burn.go | 12 ++++++++++-- internal/handler/token_mint.go | 12 ++++++++++-- internal/handler/token_transfer.go | 20 ++++++++++++++------ internal/processor/block.go | 7 ++++--- 6 files changed, 42 insertions(+), 14 deletions(-) diff --git a/config.toml b/config.toml index c68e009..c57a78e 100644 --- a/config.toml +++ b/config.toml @@ -16,4 +16,4 @@ registries = [ "0xd1FB944748aca327a1ba036B082993D9dd9Bfa0C", "0x0cc9f4fff962def35bb34a53691180b13e653030", ] -blacklist = ["0x765DE816845861e75A25fCA122bb6898B8B1282a"] +blacklist = [""] diff --git a/internal/handler/handler.go b/internal/handler/handler.go index 5c48e79..cbb03b1 100644 --- a/internal/handler/handler.go +++ b/internal/handler/handler.go @@ -9,6 +9,7 @@ import ( type ( Handler interface { + Name() string HandleLog(context.Context, LogMessage, emitter.Emitter) error HandleRevert(context.Context, RevertMessage, emitter.Emitter) error } @@ -42,5 +43,7 @@ type ( func New() []Handler { return []Handler{ &TokenTransferHandler{}, + &TokenMintHandler{}, + &TokenBurnHandler{}, } } diff --git a/internal/handler/token_burn.go b/internal/handler/token_burn.go index 223175f..f70802b 100644 --- a/internal/handler/token_burn.go +++ b/internal/handler/token_burn.go @@ -16,12 +16,20 @@ type ( } ) +const ( + burnEventName = "TOKEN_BURN" +) + var ( tokenBurnTopicHash = w3.H("0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5") tokenBurnEvent = w3.MustNewEvent("tokenBurn(address indexed _tokenBurner, uint256 _value)") tokenBurnToSig = w3.MustNewFunc("tokenBurn(uint256)", "bool") ) +func (h *TokenBurnHandler) Name() string { + return burnEventName +} + func (h *TokenBurnHandler) HandleLog(ctx context.Context, msg LogMessage, emitter emitter.Emitter) error { if msg.Log.Topics[0] == tokenBurnTopicHash { var ( @@ -39,7 +47,7 @@ func (h *TokenBurnHandler) HandleLog(ctx context.Context, msg LogMessage, emitte Success: true, Timestamp: msg.BlockTime, TxHash: msg.Log.TxHash.Hex(), - TxType: "TOKEN_BURN", + TxType: burnEventName, Payload: map[string]any{ "tokenBurner": tokenBurner.Hex(), "value": value.String(), @@ -73,7 +81,7 @@ func (h *TokenBurnHandler) HandleRevert(ctx context.Context, msg RevertMessage, Success: false, Timestamp: msg.Timestamp, TxHash: msg.TxHash, - TxType: "TOKEN_BURN", + TxType: burnEventName, Payload: map[string]any{ "revertReason": msg.RevertReason, "tokenBurner": msg.From, diff --git a/internal/handler/token_mint.go b/internal/handler/token_mint.go index 61b7eaf..bb2b5d9 100644 --- a/internal/handler/token_mint.go +++ b/internal/handler/token_mint.go @@ -16,12 +16,20 @@ type ( } ) +const ( + mintEventName = "TOKEN_MINT" +) + var ( tokenMintTopicHash = w3.H("0xab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8") tokenMintEvent = w3.MustNewEvent("tokenMint(address indexed _tokenMinter, address indexed _beneficiary, uint256 _value)") tokenMintToSig = w3.MustNewFunc("tokenMintTo(address, uint256)", "bool") ) +func (h *TokenMintHandler) Name() string { + return mintEventName +} + func (h *TokenMintHandler) HandleLog(ctx context.Context, msg LogMessage, emitter emitter.Emitter) error { if msg.Log.Topics[0] == tokenMintTopicHash { var ( @@ -40,7 +48,7 @@ func (h *TokenMintHandler) HandleLog(ctx context.Context, msg LogMessage, emitte Success: true, Timestamp: msg.BlockTime, TxHash: msg.Log.TxHash.Hex(), - TxType: "TOKEN_MINT", + TxType: mintEventName, Payload: map[string]any{ "tokenMinter": tokenMinter.Hex(), "to": to.Hex(), @@ -76,7 +84,7 @@ func (h *TokenMintHandler) HandleRevert(ctx context.Context, msg RevertMessage, Success: false, Timestamp: msg.Timestamp, TxHash: msg.TxHash, - TxType: "TOKEN_MINT", + TxType: mintEventName, Payload: map[string]any{ "revertReason": msg.RevertReason, "tokenMinter": msg.From, diff --git a/internal/handler/token_transfer.go b/internal/handler/token_transfer.go index 2130514..1e83700 100644 --- a/internal/handler/token_transfer.go +++ b/internal/handler/token_transfer.go @@ -16,13 +16,21 @@ type ( } ) +const ( + transferEventName = "TOKEN_TRANSFER" +) + var ( tokenTransferTopicHash = w3.H("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef") - tokenTransferEvent = w3.MustNewEvent("tokenTransfer(address indexed _from, address indexed _to, uint256 _value)") - tokenTransferSig = w3.MustNewFunc("tokenTransfer(address, uint256)", "bool") - tokenTransferFromSig = w3.MustNewFunc("tokenTransferFrom(address, address, uint256)", "bool") + tokenTransferEvent = w3.MustNewEvent("Transfer(address indexed _from, address indexed _to, uint256 _value)") + tokenTransferSig = w3.MustNewFunc("transfer(address, uint256)", "bool") + tokenTransferFromSig = w3.MustNewFunc("transferFrom(address, address, uint256)", "bool") ) +func (h *TokenTransferHandler) Name() string { + return transferEventName +} + func (h *TokenTransferHandler) HandleLog(ctx context.Context, msg LogMessage, emitter emitter.Emitter) error { if msg.Log.Topics[0] == tokenTransferTopicHash { var ( @@ -41,7 +49,7 @@ func (h *TokenTransferHandler) HandleLog(ctx context.Context, msg LogMessage, em Success: true, Timestamp: msg.BlockTime, TxHash: msg.Log.TxHash.Hex(), - TxType: "TOKEN_TRANSFER", + TxType: transferEventName, Payload: map[string]any{ "from": from.Hex(), "to": to.Hex(), @@ -77,7 +85,7 @@ func (h *TokenTransferHandler) HandleRevert(ctx context.Context, msg RevertMessa Success: false, Timestamp: msg.Timestamp, TxHash: msg.TxHash, - TxType: "TOKEN_TRANSFER", + TxType: transferEventName, Payload: map[string]any{ "revertReason": msg.RevertReason, "from": msg.From, @@ -104,7 +112,7 @@ func (h *TokenTransferHandler) HandleRevert(ctx context.Context, msg RevertMessa Success: false, Timestamp: msg.Timestamp, TxHash: msg.TxHash, - TxType: "TOKEN_TRANSFER", + TxType: transferEventName, Payload: map[string]any{ "revertReason": msg.RevertReason, "from": from.Hex(), diff --git a/internal/processor/block.go b/internal/processor/block.go index 43751fc..63e8f75 100644 --- a/internal/processor/block.go +++ b/internal/processor/block.go @@ -2,6 +2,7 @@ package processor import ( "context" + "fmt" "github.com/celo-org/celo-blockchain/common" "github.com/celo-org/celo-blockchain/core/types" @@ -33,7 +34,7 @@ func (p *Processor) processBlock(ctx context.Context, block types.Block) error { } if err := p.handleLogs(ctx, msg); err != nil { - p.logg.Error("handler error", "handler_type", "log", "error", err) + p.logg.Error("handler error", "handler_type", "log", "handler_name", "error", err) } } } @@ -77,7 +78,7 @@ func (p *Processor) processBlock(ctx context.Context, block types.Block) error { func (p *Processor) handleLogs(ctx context.Context, msg handler.LogMessage) error { for _, handler := range p.handlers { if err := handler.HandleLog(ctx, msg, p.emitter); err != nil { - return err + return fmt.Errorf("handler: %s err: %v", handler.Name(), err) } } @@ -87,7 +88,7 @@ func (p *Processor) handleLogs(ctx context.Context, msg handler.LogMessage) erro func (p *Processor) handleRevert(ctx context.Context, msg handler.RevertMessage) error { for _, handler := range p.handlers { if err := handler.HandleRevert(ctx, msg, p.emitter); err != nil { - return err + return fmt.Errorf("handler: %s err: %v", handler.Name(), err) } }