update handler interface. Add Name method

This commit is contained in:
Mohamed Sohail 2024-04-18 17:28:45 +08:00
parent 0f55babf41
commit f981007e71
Signed by: kamikazechaser
GPG Key ID: 7DD45520C01CD85D
6 changed files with 42 additions and 14 deletions

View File

@ -16,4 +16,4 @@ registries = [
"0xd1FB944748aca327a1ba036B082993D9dd9Bfa0C", "0xd1FB944748aca327a1ba036B082993D9dd9Bfa0C",
"0x0cc9f4fff962def35bb34a53691180b13e653030", "0x0cc9f4fff962def35bb34a53691180b13e653030",
] ]
blacklist = ["0x765DE816845861e75A25fCA122bb6898B8B1282a"] blacklist = [""]

View File

@ -9,6 +9,7 @@ import (
type ( type (
Handler interface { Handler interface {
Name() string
HandleLog(context.Context, LogMessage, emitter.Emitter) error HandleLog(context.Context, LogMessage, emitter.Emitter) error
HandleRevert(context.Context, RevertMessage, emitter.Emitter) error HandleRevert(context.Context, RevertMessage, emitter.Emitter) error
} }
@ -42,5 +43,7 @@ type (
func New() []Handler { func New() []Handler {
return []Handler{ return []Handler{
&TokenTransferHandler{}, &TokenTransferHandler{},
&TokenMintHandler{},
&TokenBurnHandler{},
} }
} }

View File

@ -16,12 +16,20 @@ type (
} }
) )
const (
burnEventName = "TOKEN_BURN"
)
var ( var (
tokenBurnTopicHash = w3.H("0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5") tokenBurnTopicHash = w3.H("0xcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5")
tokenBurnEvent = w3.MustNewEvent("tokenBurn(address indexed _tokenBurner, uint256 _value)") tokenBurnEvent = w3.MustNewEvent("tokenBurn(address indexed _tokenBurner, uint256 _value)")
tokenBurnToSig = w3.MustNewFunc("tokenBurn(uint256)", "bool") 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 { func (h *TokenBurnHandler) HandleLog(ctx context.Context, msg LogMessage, emitter emitter.Emitter) error {
if msg.Log.Topics[0] == tokenBurnTopicHash { if msg.Log.Topics[0] == tokenBurnTopicHash {
var ( var (
@ -39,7 +47,7 @@ func (h *TokenBurnHandler) HandleLog(ctx context.Context, msg LogMessage, emitte
Success: true, Success: true,
Timestamp: msg.BlockTime, Timestamp: msg.BlockTime,
TxHash: msg.Log.TxHash.Hex(), TxHash: msg.Log.TxHash.Hex(),
TxType: "TOKEN_BURN", TxType: burnEventName,
Payload: map[string]any{ Payload: map[string]any{
"tokenBurner": tokenBurner.Hex(), "tokenBurner": tokenBurner.Hex(),
"value": value.String(), "value": value.String(),
@ -73,7 +81,7 @@ func (h *TokenBurnHandler) HandleRevert(ctx context.Context, msg RevertMessage,
Success: false, Success: false,
Timestamp: msg.Timestamp, Timestamp: msg.Timestamp,
TxHash: msg.TxHash, TxHash: msg.TxHash,
TxType: "TOKEN_BURN", TxType: burnEventName,
Payload: map[string]any{ Payload: map[string]any{
"revertReason": msg.RevertReason, "revertReason": msg.RevertReason,
"tokenBurner": msg.From, "tokenBurner": msg.From,

View File

@ -16,12 +16,20 @@ type (
} }
) )
const (
mintEventName = "TOKEN_MINT"
)
var ( var (
tokenMintTopicHash = w3.H("0xab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8") tokenMintTopicHash = w3.H("0xab8530f87dc9b59234c4623bf917212bb2536d647574c8e7e5da92c2ede0c9f8")
tokenMintEvent = w3.MustNewEvent("tokenMint(address indexed _tokenMinter, address indexed _beneficiary, uint256 _value)") tokenMintEvent = w3.MustNewEvent("tokenMint(address indexed _tokenMinter, address indexed _beneficiary, uint256 _value)")
tokenMintToSig = w3.MustNewFunc("tokenMintTo(address, uint256)", "bool") 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 { func (h *TokenMintHandler) HandleLog(ctx context.Context, msg LogMessage, emitter emitter.Emitter) error {
if msg.Log.Topics[0] == tokenMintTopicHash { if msg.Log.Topics[0] == tokenMintTopicHash {
var ( var (
@ -40,7 +48,7 @@ func (h *TokenMintHandler) HandleLog(ctx context.Context, msg LogMessage, emitte
Success: true, Success: true,
Timestamp: msg.BlockTime, Timestamp: msg.BlockTime,
TxHash: msg.Log.TxHash.Hex(), TxHash: msg.Log.TxHash.Hex(),
TxType: "TOKEN_MINT", TxType: mintEventName,
Payload: map[string]any{ Payload: map[string]any{
"tokenMinter": tokenMinter.Hex(), "tokenMinter": tokenMinter.Hex(),
"to": to.Hex(), "to": to.Hex(),
@ -76,7 +84,7 @@ func (h *TokenMintHandler) HandleRevert(ctx context.Context, msg RevertMessage,
Success: false, Success: false,
Timestamp: msg.Timestamp, Timestamp: msg.Timestamp,
TxHash: msg.TxHash, TxHash: msg.TxHash,
TxType: "TOKEN_MINT", TxType: mintEventName,
Payload: map[string]any{ Payload: map[string]any{
"revertReason": msg.RevertReason, "revertReason": msg.RevertReason,
"tokenMinter": msg.From, "tokenMinter": msg.From,

View File

@ -16,13 +16,21 @@ type (
} }
) )
const (
transferEventName = "TOKEN_TRANSFER"
)
var ( var (
tokenTransferTopicHash = w3.H("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef") tokenTransferTopicHash = w3.H("0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef")
tokenTransferEvent = w3.MustNewEvent("tokenTransfer(address indexed _from, address indexed _to, uint256 _value)") tokenTransferEvent = w3.MustNewEvent("Transfer(address indexed _from, address indexed _to, uint256 _value)")
tokenTransferSig = w3.MustNewFunc("tokenTransfer(address, uint256)", "bool") tokenTransferSig = w3.MustNewFunc("transfer(address, uint256)", "bool")
tokenTransferFromSig = w3.MustNewFunc("tokenTransferFrom(address, 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 { func (h *TokenTransferHandler) HandleLog(ctx context.Context, msg LogMessage, emitter emitter.Emitter) error {
if msg.Log.Topics[0] == tokenTransferTopicHash { if msg.Log.Topics[0] == tokenTransferTopicHash {
var ( var (
@ -41,7 +49,7 @@ func (h *TokenTransferHandler) HandleLog(ctx context.Context, msg LogMessage, em
Success: true, Success: true,
Timestamp: msg.BlockTime, Timestamp: msg.BlockTime,
TxHash: msg.Log.TxHash.Hex(), TxHash: msg.Log.TxHash.Hex(),
TxType: "TOKEN_TRANSFER", TxType: transferEventName,
Payload: map[string]any{ Payload: map[string]any{
"from": from.Hex(), "from": from.Hex(),
"to": to.Hex(), "to": to.Hex(),
@ -77,7 +85,7 @@ func (h *TokenTransferHandler) HandleRevert(ctx context.Context, msg RevertMessa
Success: false, Success: false,
Timestamp: msg.Timestamp, Timestamp: msg.Timestamp,
TxHash: msg.TxHash, TxHash: msg.TxHash,
TxType: "TOKEN_TRANSFER", TxType: transferEventName,
Payload: map[string]any{ Payload: map[string]any{
"revertReason": msg.RevertReason, "revertReason": msg.RevertReason,
"from": msg.From, "from": msg.From,
@ -104,7 +112,7 @@ func (h *TokenTransferHandler) HandleRevert(ctx context.Context, msg RevertMessa
Success: false, Success: false,
Timestamp: msg.Timestamp, Timestamp: msg.Timestamp,
TxHash: msg.TxHash, TxHash: msg.TxHash,
TxType: "TOKEN_TRANSFER", TxType: transferEventName,
Payload: map[string]any{ Payload: map[string]any{
"revertReason": msg.RevertReason, "revertReason": msg.RevertReason,
"from": from.Hex(), "from": from.Hex(),

View File

@ -2,6 +2,7 @@ package processor
import ( import (
"context" "context"
"fmt"
"github.com/celo-org/celo-blockchain/common" "github.com/celo-org/celo-blockchain/common"
"github.com/celo-org/celo-blockchain/core/types" "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 { 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 { func (p *Processor) handleLogs(ctx context.Context, msg handler.LogMessage) error {
for _, handler := range p.handlers { for _, handler := range p.handlers {
if err := handler.HandleLog(ctx, msg, p.emitter); err != nil { 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 { func (p *Processor) handleRevert(ctx context.Context, msg handler.RevertMessage) error {
for _, handler := range p.handlers { for _, handler := range p.handlers {
if err := handler.HandleRevert(ctx, msg, p.emitter); err != nil { if err := handler.HandleRevert(ctx, msg, p.emitter); err != nil {
return err return fmt.Errorf("handler: %s err: %v", handler.Name(), err)
} }
} }