refactor default config

This commit is contained in:
Sina Mahmoodi 2024-10-11 12:38:03 +02:00
parent f3e8e9a458
commit cdff643e5f
7 changed files with 18 additions and 27 deletions

View file

@ -543,6 +543,7 @@ var (
VMTraceJsonConfigFlag = &cli.StringFlag{ VMTraceJsonConfigFlag = &cli.StringFlag{
Name: "vmtrace.jsonconfig", Name: "vmtrace.jsonconfig",
Usage: "Tracer configuration (JSON)", Usage: "Tracer configuration (JSON)",
Value: "{}",
Category: flags.VMCategory, Category: flags.VMCategory,
} }
// API options. // API options.
@ -1899,13 +1900,8 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) {
// VM tracing config. // VM tracing config.
if ctx.IsSet(VMTraceFlag.Name) { if ctx.IsSet(VMTraceFlag.Name) {
if name := ctx.String(VMTraceFlag.Name); name != "" { if name := ctx.String(VMTraceFlag.Name); name != "" {
var config string
if ctx.IsSet(VMTraceJsonConfigFlag.Name) {
config = ctx.String(VMTraceJsonConfigFlag.Name)
}
cfg.VMTrace = name cfg.VMTrace = name
cfg.VMTraceJsonConfig = config cfg.VMTraceJsonConfig = ctx.String(VMTraceJsonConfigFlag.Name)
} }
} }
} }
@ -2186,10 +2182,7 @@ func MakeChain(ctx *cli.Context, stack *node.Node, readonly bool) (*core.BlockCh
} }
if ctx.IsSet(VMTraceFlag.Name) { if ctx.IsSet(VMTraceFlag.Name) {
if name := ctx.String(VMTraceFlag.Name); name != "" { if name := ctx.String(VMTraceFlag.Name); name != "" {
config := json.RawMessage("{}") config := json.RawMessage(ctx.String(VMTraceJsonConfigFlag.Name))
if ctx.IsSet(VMTraceJsonConfigFlag.Name) {
config = json.RawMessage(ctx.String(VMTraceJsonConfigFlag.Name))
}
t, err := tracers.LiveDirectory.New(name, config) t, err := tracers.LiveDirectory.New(name, config)
if err != nil { if err != nil {
Fatalf("Failed to create tracer %q: %v", name, err) Fatalf("Failed to create tracer %q: %v", name, err)

View file

@ -80,6 +80,9 @@ func (d *directory) RegisterJSEval(f jsCtorFn) {
// registered lookups. Name is either name of an existing tracer // registered lookups. Name is either name of an existing tracer
// or an arbitrary JS code. // or an arbitrary JS code.
func (d *directory) New(name string, ctx *Context, cfg json.RawMessage, chainConfig *params.ChainConfig) (*Tracer, error) { func (d *directory) New(name string, ctx *Context, cfg json.RawMessage, chainConfig *params.ChainConfig) (*Tracer, error) {
if len(cfg) == 0 {
cfg = json.RawMessage("{}")
}
if elem, ok := d.elems[name]; ok { if elem, ok := d.elems[name]; ok {
return elem.ctor(ctx, cfg, chainConfig) return elem.ctor(ctx, cfg, chainConfig)
} }

View file

@ -40,6 +40,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) (*tracing.Hooks, error) {
if len(config) == 0 {
config = json.RawMessage("{}")
}
if f, ok := d.elems[name]; ok { if f, ok := d.elems[name]; ok {
return f(config) return f(config)
} }

View file

@ -146,10 +146,8 @@ func newCallTracer(ctx *tracers.Context, cfg json.RawMessage, chainConfig *param
func newCallTracerObject(ctx *tracers.Context, cfg json.RawMessage) (*callTracer, error) { func newCallTracerObject(ctx *tracers.Context, cfg json.RawMessage) (*callTracer, error) {
var config callTracerConfig var config callTracerConfig
if cfg != nil { if err := json.Unmarshal(cfg, &config); err != nil {
if err := json.Unmarshal(cfg, &config); err != nil { return nil, err
return nil, err
}
} }
// First callframe contains tx context info // First callframe contains tx context info
// and is populated on start and end. // and is populated on start and end.

View file

@ -129,15 +129,13 @@ type flatCallTracerConfig struct {
// newFlatCallTracer returns a new flatCallTracer. // newFlatCallTracer returns a new flatCallTracer.
func newFlatCallTracer(ctx *tracers.Context, cfg json.RawMessage, chainConfig *params.ChainConfig) (*tracers.Tracer, error) { func newFlatCallTracer(ctx *tracers.Context, cfg json.RawMessage, chainConfig *params.ChainConfig) (*tracers.Tracer, error) {
var config flatCallTracerConfig var config flatCallTracerConfig
if cfg != nil { if err := json.Unmarshal(cfg, &config); err != nil {
if err := json.Unmarshal(cfg, &config); err != nil { return nil, err
return nil, err
}
} }
// Create inner call tracer with default configuration, don't forward // Create inner call tracer with default configuration, don't forward
// the OnlyTopCall or WithLog to inner for now // the OnlyTopCall or WithLog to inner for now
t, err := newCallTracerObject(ctx, nil) t, err := newCallTracerObject(ctx, json.RawMessage("{}"))
if err != nil { if err != nil {
return nil, err return nil, err
} }

View file

@ -41,10 +41,8 @@ type muxTracer struct {
// newMuxTracer returns a new mux tracer. // newMuxTracer returns a new mux tracer.
func newMuxTracer(ctx *tracers.Context, cfg json.RawMessage, chainConfig *params.ChainConfig) (*tracers.Tracer, error) { func newMuxTracer(ctx *tracers.Context, cfg json.RawMessage, chainConfig *params.ChainConfig) (*tracers.Tracer, error) {
var config map[string]json.RawMessage var config map[string]json.RawMessage
if cfg != nil { if err := json.Unmarshal(cfg, &config); err != nil {
if err := json.Unmarshal(cfg, &config); err != nil { return nil, err
return nil, err
}
} }
objects := make([]*tracers.Tracer, 0, len(config)) objects := make([]*tracers.Tracer, 0, len(config))
names := make([]string, 0, len(config)) names := make([]string, 0, len(config))

View file

@ -77,10 +77,8 @@ type prestateTracerConfig struct {
func newPrestateTracer(ctx *tracers.Context, cfg json.RawMessage, chainConfig *params.ChainConfig) (*tracers.Tracer, error) { func newPrestateTracer(ctx *tracers.Context, cfg json.RawMessage, chainConfig *params.ChainConfig) (*tracers.Tracer, error) {
var config prestateTracerConfig var config prestateTracerConfig
if cfg != nil { if err := json.Unmarshal(cfg, &config); err != nil {
if err := json.Unmarshal(cfg, &config); err != nil { return nil, err
return nil, err
}
} }
t := &prestateTracer{ t := &prestateTracer{
pre: stateMap{}, pre: stateMap{},