check given tracer

Signed-off-by: jsvisa <delweng@gmail.com>
This commit is contained in:
jsvisa 2024-08-19 15:30:26 +00:00
parent 1aac054d9a
commit b759f84cf9

View file

@ -2,6 +2,7 @@ package live
import ( import (
"context" "context"
"errors"
"github.com/ethereum/go-ethereum/eth/tracers" "github.com/ethereum/go-ethereum/eth/tracers"
"github.com/ethereum/go-ethereum/rpc" "github.com/ethereum/go-ethereum/rpc"
@ -20,16 +21,25 @@ var defaultTraceConfig = &traceConfig{
Tracer: "callTracer", Tracer: "callTracer",
} }
func (api *filterAPI) Block(ctx context.Context, blockNr rpc.BlockNumber, cfg *traceConfig) ([]*traceResult, error) { func (api *filterAPI) isSupportedTracer(tracer string) bool {
blknum := uint64(blockNr.Int64()) _, ok := api.filter.tracer.Tracers()[tracer]
if blockNr == rpc.LatestBlockNumber { return ok
blknum = api.filter.latest.Load()
} }
func (api *filterAPI) Block(ctx context.Context, blockNr rpc.BlockNumber, cfg *traceConfig) ([]*traceResult, error) {
tracer := defaultTraceConfig.Tracer tracer := defaultTraceConfig.Tracer
if cfg != nil { if cfg != nil {
tracer = cfg.Tracer tracer = cfg.Tracer
} }
if !api.isSupportedTracer(tracer) {
return nil, errors.New("tracer not found")
}
blknum := uint64(blockNr.Int64())
if blockNr == rpc.LatestBlockNumber {
blknum = api.filter.latest.Load()
}
return api.filter.readBlockTraces(ctx, tracer, blknum) return api.filter.readBlockTraces(ctx, tracer, blknum)
} }