From 4881b880a1fd37f576216c1f6c37bfcee88278af Mon Sep 17 00:00:00 2001 From: jsvisa Date: Mon, 12 Aug 2024 03:01:00 +0000 Subject: [PATCH] eth/tracers: live tracer return apis Signed-off-by: jsvisa --- eth/tracers/internal/tracetest/supply_test.go | 2 +- eth/tracers/live.go | 7 ++++--- eth/tracers/live/noop.go | 5 +++-- eth/tracers/live/supply.go | 9 +++++---- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/eth/tracers/internal/tracetest/supply_test.go b/eth/tracers/internal/tracetest/supply_test.go index 9da2c599b1..a04548190e 100644 --- a/eth/tracers/internal/tracetest/supply_test.go +++ b/eth/tracers/internal/tracetest/supply_test.go @@ -552,7 +552,7 @@ func testSupplyTracer(t *testing.T, genesis *core.Genesis, gen func(*core.BlockG traceOutputFilename := path.Join(traceOutputPath, "supply.jsonl") // Load supply tracer - tracer, err := tracers.LiveDirectory.New("supply", json.RawMessage(fmt.Sprintf(`{"path":"%s"}`, traceOutputPath)), nil) + tracer, _, err := tracers.LiveDirectory.New("supply", json.RawMessage(fmt.Sprintf(`{"path":"%s"}`, traceOutputPath)), nil) if err != nil { return nil, nil, fmt.Errorf("failed to create call tracer: %v", err) } diff --git a/eth/tracers/live.go b/eth/tracers/live.go index 0dbdb8ce75..515923b0b3 100644 --- a/eth/tracers/live.go +++ b/eth/tracers/live.go @@ -5,9 +5,10 @@ import ( "errors" "github.com/ethereum/go-ethereum/core/tracing" + "github.com/ethereum/go-ethereum/rpc" ) -type ctorFunc func(config json.RawMessage, backend Backend) (*tracing.Hooks, error) +type ctorFunc func(config json.RawMessage, backend Backend) (*tracing.Hooks, []rpc.API, error) // LiveDirectory is the collection of tracers which can be used // during normal block import operations. @@ -23,9 +24,9 @@ func (d *liveDirectory) Register(name string, f ctorFunc) { } // New instantiates a tracer by name. -func (d *liveDirectory) New(name string, config json.RawMessage, backend Backend) (*tracing.Hooks, error) { +func (d *liveDirectory) New(name string, config json.RawMessage, backend Backend) (*tracing.Hooks, []rpc.API, error) { if f, ok := d.elems[name]; ok { return f(config, backend) } - return nil, errors.New("not found") + return nil, nil, errors.New("not found") } diff --git a/eth/tracers/live/noop.go b/eth/tracers/live/noop.go index 306e2e07cb..b83abfd303 100644 --- a/eth/tracers/live/noop.go +++ b/eth/tracers/live/noop.go @@ -9,6 +9,7 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/eth/tracers" "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rpc" ) func init() { @@ -21,7 +22,7 @@ func init() { // as soon as we have a real live tracer. type noop struct{} -func newNoopTracer(_ json.RawMessage, _ tracers.Backend) (*tracing.Hooks, error) { +func newNoopTracer(_ json.RawMessage, _ tracers.Backend) (*tracing.Hooks, []rpc.API, error) { t := &noop{} return &tracing.Hooks{ OnTxStart: t.OnTxStart, @@ -41,7 +42,7 @@ func newNoopTracer(_ json.RawMessage, _ tracers.Backend) (*tracing.Hooks, error) OnCodeChange: t.OnCodeChange, OnStorageChange: t.OnStorageChange, OnLog: t.OnLog, - }, nil + }, nil, nil } func (t *noop) OnOpcode(pc uint64, op byte, gas, cost uint64, scope tracing.OpContext, rData []byte, depth int, err error) { diff --git a/eth/tracers/live/supply.go b/eth/tracers/live/supply.go index 085234a65a..84b23fe7e9 100644 --- a/eth/tracers/live/supply.go +++ b/eth/tracers/live/supply.go @@ -15,6 +15,7 @@ import ( "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/eth/tracers" "github.com/ethereum/go-ethereum/log" + "github.com/ethereum/go-ethereum/rpc" "gopkg.in/natefinch/lumberjack.v2" ) @@ -74,15 +75,15 @@ 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. } -func newSupply(cfg json.RawMessage, _ tracers.Backend) (*tracing.Hooks, error) { +func newSupply(cfg json.RawMessage, _ tracers.Backend) (*tracing.Hooks, []rpc.API, error) { var config supplyTracerConfig if cfg != nil { if err := json.Unmarshal(cfg, &config); err != nil { - return nil, fmt.Errorf("failed to parse config: %v", err) + return nil, nil, fmt.Errorf("failed to parse config: %v", err) } } if config.Path == "" { - return nil, errors.New("supply tracer output path is required") + return nil, nil, errors.New("supply tracer output path is required") } // Store traces in a rotating file @@ -106,7 +107,7 @@ func newSupply(cfg json.RawMessage, _ tracers.Backend) (*tracing.Hooks, error) { OnEnter: t.OnEnter, OnExit: t.OnExit, OnClose: t.OnClose, - }, nil + }, nil, nil } func newSupplyInfo() supplyInfo {