cc3b2ff8e9
* server: update server and enable configurable tracer * config validation * fix import cycle * fix start * update fields * c++ * c++
41 lines
1.0 KiB
Go
41 lines
1.0 KiB
Go
package types
|
|
|
|
import (
|
|
"math/big"
|
|
"os"
|
|
|
|
"github.com/ethereum/go-ethereum/core"
|
|
"github.com/ethereum/go-ethereum/core/vm"
|
|
"github.com/ethereum/go-ethereum/params"
|
|
)
|
|
|
|
const (
|
|
TracerAccessList = "access_list"
|
|
TracerJSON = "json"
|
|
TracerStruct = "struct"
|
|
TracerMarkdown = "markdown"
|
|
)
|
|
|
|
// NewTracer creates a new Logger tracer to collect execution traces from an
|
|
// EVM transaction.
|
|
func NewTracer(tracer string, msg core.Message, cfg *params.ChainConfig, height int64, debug bool) vm.Tracer {
|
|
// TODO: enable additional log configuration
|
|
logCfg := &vm.LogConfig{
|
|
Debug: debug,
|
|
}
|
|
|
|
switch tracer {
|
|
case TracerAccessList:
|
|
precompiles := vm.ActivePrecompiles(cfg.Rules(big.NewInt(height)))
|
|
return vm.NewAccessListTracer(msg.AccessList(), msg.From(), *msg.To(), precompiles)
|
|
case TracerJSON:
|
|
return vm.NewJSONLogger(logCfg, os.Stderr)
|
|
case TracerMarkdown:
|
|
return vm.NewMarkdownLogger(logCfg, os.Stdout) // TODO: Stderr ?
|
|
case TracerStruct:
|
|
return vm.NewStructLogger(logCfg)
|
|
default:
|
|
return nil
|
|
}
|
|
}
|