mirror of
https://github.com/grassrootseconomics/eth-tracker.git
synced 2025-04-25 01:41:00 +02:00
update handler interface. Add Name method
This commit is contained in:
parent
0f55babf41
commit
f981007e71
@ -16,4 +16,4 @@ registries = [
|
|||||||
"0xd1FB944748aca327a1ba036B082993D9dd9Bfa0C",
|
"0xd1FB944748aca327a1ba036B082993D9dd9Bfa0C",
|
||||||
"0x0cc9f4fff962def35bb34a53691180b13e653030",
|
"0x0cc9f4fff962def35bb34a53691180b13e653030",
|
||||||
]
|
]
|
||||||
blacklist = ["0x765DE816845861e75A25fCA122bb6898B8B1282a"]
|
blacklist = [""]
|
||||||
|
@ -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{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
|
@ -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,
|
||||||
|
@ -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(),
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user