mirror of
https://github.com/grassrootseconomics/eth-tracker.git
synced 2026-09-04 00:13:15 +02:00
feat: add event structure, fix overflow issues
This commit is contained in:
@@ -5,7 +5,7 @@ import (
|
||||
|
||||
"github.com/celo-org/celo-blockchain/common"
|
||||
"github.com/celo-org/celo-blockchain/core/types"
|
||||
"github.com/grassrootseconomics/celo-tracker/internal/emitter"
|
||||
"github.com/grassrootseconomics/celo-tracker/internal/handler"
|
||||
)
|
||||
|
||||
func (p *Processor) processBlock(ctx context.Context, block types.Block) error {
|
||||
@@ -27,15 +27,41 @@ func (p *Processor) processBlock(ctx context.Context, block types.Block) error {
|
||||
if receipt.Status > 0 {
|
||||
for _, log := range receipt.Logs {
|
||||
if p.cache.Exists(log.Address.Hex()) {
|
||||
if err := p.handleLogs(ctx, log); err != nil {
|
||||
p.logg.Error("hanlder error", "error", err)
|
||||
msg := handler.LogMessage{
|
||||
Log: log,
|
||||
BlockTime: block.Time(),
|
||||
}
|
||||
|
||||
if err := p.handleLogs(ctx, msg); err != nil {
|
||||
p.logg.Error("handler error", "handler_type", "log", "error", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
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()))
|
||||
from, err := types.Sender(types.LatestSignerForChainID(txs[i].ChainId()), &txs[i])
|
||||
if err != nil {
|
||||
p.logg.Error("hanlder error", "handler_type", "revert", "error", err)
|
||||
}
|
||||
|
||||
revertReason, err := p.chain.GetRevertReason(ctx, receipt.TxHash, receipt.BlockNumber)
|
||||
if err != nil {
|
||||
p.logg.Error("handler error", "handler_type", "revert", "error", err)
|
||||
}
|
||||
|
||||
msg := handler.RevertMessage{
|
||||
From: from.Hex(),
|
||||
RevertReason: revertReason,
|
||||
InputData: common.Bytes2Hex(txs[i].Data()),
|
||||
Block: blockNumber,
|
||||
ContractAddress: txs[i].To().Hex(),
|
||||
Timestamp: block.Time(),
|
||||
TxHash: receipt.TxHash.Hex(),
|
||||
}
|
||||
|
||||
if err := p.handleRevert(ctx, msg); err != nil {
|
||||
p.logg.Error("handler error", "handler_type", "revert", "error", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -48,15 +74,22 @@ func (p *Processor) processBlock(ctx context.Context, block types.Block) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *Processor) handleLogs(ctx context.Context, log *types.Log) error {
|
||||
defaultEmitter := emitter.New(emitter.EmitterOpts{
|
||||
Logg: p.logg,
|
||||
})
|
||||
|
||||
func (p *Processor) handleLogs(ctx context.Context, msg handler.LogMessage) error {
|
||||
for _, handler := range p.handlers {
|
||||
if err := handler.Handle(ctx, log, defaultEmitter); err != nil {
|
||||
if err := handler.HandleLog(ctx, msg, p.emitter); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
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 nil
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import (
|
||||
"github.com/grassrootseconomics/celo-tracker/internal/cache"
|
||||
"github.com/grassrootseconomics/celo-tracker/internal/chain"
|
||||
"github.com/grassrootseconomics/celo-tracker/internal/db"
|
||||
"github.com/grassrootseconomics/celo-tracker/internal/emitter"
|
||||
"github.com/grassrootseconomics/celo-tracker/internal/handler"
|
||||
"github.com/grassrootseconomics/celo-tracker/internal/pool"
|
||||
"github.com/grassrootseconomics/celo-tracker/internal/stats"
|
||||
@@ -24,6 +25,7 @@ type (
|
||||
Stats *stats.Stats
|
||||
DB *db.DB
|
||||
Cache cache.Cache
|
||||
Emitter emitter.Emitter
|
||||
}
|
||||
|
||||
Processor struct {
|
||||
@@ -36,6 +38,7 @@ type (
|
||||
quit chan struct{}
|
||||
handlers []handler.Handler
|
||||
cache cache.Cache
|
||||
emitter emitter.Emitter
|
||||
}
|
||||
)
|
||||
|
||||
@@ -54,6 +57,7 @@ func NewProcessor(o ProcessorOpts) *Processor {
|
||||
quit: make(chan struct{}),
|
||||
handlers: handler.New(),
|
||||
cache: o.Cache,
|
||||
emitter: o.Emitter,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user