Skip to content

Commit 4534c86

Browse files
s1nasadoci
authored andcommitted
eth/tracers: make txhash blockhash accessible to native tracers (ethereum#24679)
1 parent 924c72c commit 4534c86

File tree

5 files changed

+12
-9
lines changed

5 files changed

+12
-9
lines changed

eth/tracers/native/4byte.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ type fourByteTracer struct {
5656

5757
// newFourByteTracer returns a native go tracer which collects
5858
// 4 byte-identifiers of a tx, and implements vm.EVMLogger.
59-
func newFourByteTracer() tracers.Tracer {
59+
func newFourByteTracer(ctx *tracers.Context) tracers.Tracer {
6060
t := &fourByteTracer{
6161
ids: make(map[string]int),
6262
}

eth/tracers/native/call.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ type callTracer struct {
5656

5757
// newCallTracer returns a native go tracer which tracks
5858
// call frames of a tx, and implements vm.EVMLogger.
59-
func newCallTracer() tracers.Tracer {
59+
func newCallTracer(ctx *tracers.Context) tracers.Tracer {
6060
// First callframe contains tx context info
6161
// and is populated on start and end.
6262
return &callTracer{callstack: make([]callFrame, 1)}

eth/tracers/native/noop.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func init() {
3535
type noopTracer struct{}
3636

3737
// newNoopTracer returns a new noop tracer.
38-
func newNoopTracer() tracers.Tracer {
38+
func newNoopTracer(ctx *tracers.Context) tracers.Tracer {
3939
return &noopTracer{}
4040
}
4141

eth/tracers/native/prestate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ type prestateTracer struct {
5151
reason error // Textual reason for the interruption
5252
}
5353

54-
func newPrestateTracer() tracers.Tracer {
54+
func newPrestateTracer(ctx *tracers.Context) tracers.Tracer {
5555
// First callframe contains tx context info
5656
// and is populated on start and end.
5757
return &prestateTracer{prestate: prestate{}}

eth/tracers/native/tracer.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ func init() {
4747
tracers.RegisterLookup(false, lookup)
4848
}
4949

50+
// ctorFn is the constructor signature of a native tracer.
51+
type ctorFn = func(*tracers.Context) tracers.Tracer
52+
5053
/*
5154
ctors is a map of package-local tracer constructors.
5255
@@ -59,23 +62,23 @@ The go spec (https://golang.org/ref/spec#Package_initialization) says
5962
6063
Hence, we cannot make the map in init, but must make it upon first use.
6164
*/
62-
var ctors map[string]func() tracers.Tracer
65+
var ctors map[string]ctorFn
6366

6467
// register is used by native tracers to register their presence.
65-
func register(name string, ctor func() tracers.Tracer) {
68+
func register(name string, ctor ctorFn) {
6669
if ctors == nil {
67-
ctors = make(map[string]func() tracers.Tracer)
70+
ctors = make(map[string]ctorFn)
6871
}
6972
ctors[name] = ctor
7073
}
7174

7275
// lookup returns a tracer, if one can be matched to the given name.
7376
func lookup(name string, ctx *tracers.Context) (tracers.Tracer, error) {
7477
if ctors == nil {
75-
ctors = make(map[string]func() tracers.Tracer)
78+
ctors = make(map[string]ctorFn)
7679
}
7780
if ctor, ok := ctors[name]; ok {
78-
return ctor(), nil
81+
return ctor(ctx), nil
7982
}
8083
return nil, errors.New("no tracer found")
8184
}

0 commit comments

Comments
 (0)