2021-10-11 10:09:41 -05:00
|
|
|
package native
|
|
|
|
|
2021-10-11 10:13:54 -05:00
|
|
|
import (
|
|
|
|
"encoding/json"
|
2021-10-11 10:09:41 -05:00
|
|
|
|
2021-10-11 10:13:54 -05:00
|
|
|
"github.com/ethereum/go-ethereum/core/vm"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Tracer interface {
|
|
|
|
vm.Tracer
|
|
|
|
GetResult() (json.RawMessage, error)
|
|
|
|
}
|
|
|
|
|
|
|
|
type Constructor func() Tracer
|
2021-10-11 10:09:41 -05:00
|
|
|
|
|
|
|
var tracers map[string]Constructor = make(map[string]Constructor)
|
|
|
|
|
|
|
|
func Register(name string, fn Constructor) {
|
|
|
|
tracers[name] = fn
|
|
|
|
}
|
|
|
|
|
2021-10-11 10:13:54 -05:00
|
|
|
func New(name string) (Tracer, bool) {
|
2021-10-11 10:09:41 -05:00
|
|
|
if fn, ok := tracers[name]; ok {
|
|
|
|
return fn(), true
|
|
|
|
}
|
|
|
|
return nil, false
|
|
|
|
}
|