cmd,eth: register live tracer with Backend interface

Signed-off-by: jsvisa <delweng@gmail.com>
pull/30308/head
jsvisa 1 month ago
parent fa9a671cc8
commit 6a242ba482
  1. 4
      cmd/utils/flags.go
  2. 6
      eth/tracers/live.go
  3. 2
      eth/tracers/live/noop.go
  4. 2
      eth/tracers/live/supply.go

@ -1946,7 +1946,7 @@ func RegisterEthService(stack *node.Node, cfg *ethconfig.Config) (ethapi.Backend
if cfg.VMTraceJsonConfig != "" { if cfg.VMTraceJsonConfig != "" {
traceConfig = json.RawMessage(cfg.VMTraceJsonConfig) traceConfig = json.RawMessage(cfg.VMTraceJsonConfig)
} }
t, err := tracers.LiveDirectory.New(cfg.VMTrace, traceConfig) t, err := tracers.LiveDirectory.New(cfg.VMTrace, traceConfig, backend.APIBackend)
if err != nil { if err != nil {
Fatalf("failed to create tracer %s: %v", cfg.VMTrace, err) Fatalf("failed to create tracer %s: %v", cfg.VMTrace, err)
} }
@ -2215,7 +2215,7 @@ func MakeChain(ctx *cli.Context, stack *node.Node, readonly bool) (*core.BlockCh
if ctx.IsSet(VMTraceJsonConfigFlag.Name) { if ctx.IsSet(VMTraceJsonConfigFlag.Name) {
config = json.RawMessage(ctx.String(VMTraceJsonConfigFlag.Name)) config = json.RawMessage(ctx.String(VMTraceJsonConfigFlag.Name))
} }
t, err := tracers.LiveDirectory.New(name, config) t, err := tracers.LiveDirectory.New(name, config, nil)
if err != nil { if err != nil {
Fatalf("Failed to create tracer %q: %v", name, err) Fatalf("Failed to create tracer %q: %v", name, err)
} }

@ -7,7 +7,7 @@ import (
"github.com/ethereum/go-ethereum/core/tracing" "github.com/ethereum/go-ethereum/core/tracing"
) )
type ctorFunc func(config json.RawMessage) (*tracing.Hooks, error) type ctorFunc func(config json.RawMessage, backend Backend) (*tracing.Hooks, error)
// LiveDirectory is the collection of tracers which can be used // LiveDirectory is the collection of tracers which can be used
// during normal block import operations. // during normal block import operations.
@ -23,9 +23,9 @@ func (d *liveDirectory) Register(name string, f ctorFunc) {
} }
// New instantiates a tracer by name. // New instantiates a tracer by name.
func (d *liveDirectory) New(name string, config json.RawMessage) (*tracing.Hooks, error) { func (d *liveDirectory) New(name string, config json.RawMessage, backend Backend) (*tracing.Hooks, error) {
if f, ok := d.elems[name]; ok { if f, ok := d.elems[name]; ok {
return f(config) return f(config, backend)
} }
return nil, errors.New("not found") return nil, errors.New("not found")
} }

@ -21,7 +21,7 @@ func init() {
// as soon as we have a real live tracer. // as soon as we have a real live tracer.
type noop struct{} type noop struct{}
func newNoopTracer(_ json.RawMessage) (*tracing.Hooks, error) { func newNoopTracer(_ json.RawMessage, _ tracers.Backend) (*tracing.Hooks, error) {
t := &noop{} t := &noop{}
return &tracing.Hooks{ return &tracing.Hooks{
OnTxStart: t.OnTxStart, OnTxStart: t.OnTxStart,

@ -74,7 +74,7 @@ type supplyTracerConfig struct {
MaxSize int `json:"maxSize"` // MaxSize is the maximum size in megabytes of the tracer log file before it gets rotated. It defaults to 100 megabytes. MaxSize int `json:"maxSize"` // MaxSize is the maximum size in megabytes of the tracer log file before it gets rotated. It defaults to 100 megabytes.
} }
func newSupply(cfg json.RawMessage) (*tracing.Hooks, error) { func newSupply(cfg json.RawMessage, _ tracers.Backend) (*tracing.Hooks, error) {
var config supplyTracerConfig var config supplyTracerConfig
if cfg != nil { if cfg != nil {
if err := json.Unmarshal(cfg, &config); err != nil { if err := json.Unmarshal(cfg, &config); err != nil {

Loading…
Cancel
Save