eth/tracers: clean-up and comments
This commit is contained in:
@ -13,7 +13,7 @@ import (
|
||||
)
|
||||
|
||||
func init() {
|
||||
Register("callTracerNative", NewCallTracer)
|
||||
register("callTracerNative", NewCallTracer)
|
||||
}
|
||||
|
||||
type callFrame struct {
|
||||
@ -33,7 +33,11 @@ type CallTracer struct {
|
||||
callstack []callFrame
|
||||
}
|
||||
|
||||
// NewCallTracer returns a native go tracer which tracks
|
||||
// call frames of a tx, and implements vm.Tracer.
|
||||
func NewCallTracer() Tracer {
|
||||
// First callframe contains tx context info
|
||||
// and is populated on start and end.
|
||||
t := &CallTracer{callstack: make([]callFrame, 1)}
|
||||
return t
|
||||
}
|
||||
|
@ -6,19 +6,27 @@ import (
|
||||
"github.com/ethereum/go-ethereum/core/vm"
|
||||
)
|
||||
|
||||
// Tracer interface extends vm.Tracer and additionally
|
||||
// allows collecting the tracing result.
|
||||
type Tracer interface {
|
||||
vm.Tracer
|
||||
GetResult() (json.RawMessage, error)
|
||||
}
|
||||
|
||||
type Constructor func() Tracer
|
||||
// constructor creates a new instance of a Tracer.
|
||||
type constructor func() Tracer
|
||||
|
||||
var tracers map[string]Constructor = make(map[string]Constructor)
|
||||
var tracers map[string]constructor = make(map[string]constructor)
|
||||
|
||||
func Register(name string, fn Constructor) {
|
||||
// register makes native tracers in this directory which adhere
|
||||
// to the `Tracer` interface available to the rest of the codebase.
|
||||
// It is typically invoked in the `init()` function.
|
||||
func register(name string, fn constructor) {
|
||||
tracers[name] = fn
|
||||
}
|
||||
|
||||
// New returns a new instance of a tracer, if one was
|
||||
// registered under the given name.
|
||||
func New(name string) (Tracer, bool) {
|
||||
if fn, ok := tracers[name]; ok {
|
||||
return fn(), true
|
||||
|
Reference in New Issue
Block a user