diff --git a/cmd/evm/internal/t8ntool/transition.go b/cmd/evm/internal/t8ntool/transition.go index d5d1ba8939..a7d2486877 100644 --- a/cmd/evm/internal/t8ntool/transition.go +++ b/cmd/evm/internal/t8ntool/transition.go @@ -26,6 +26,7 @@ import ( "path" "strings" + "github.com/ethereum/go-ethereum/cmd/utils" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core/state" @@ -178,9 +179,15 @@ func Transition(ctx *cli.Context) error { prestate.Env = *inputData.Env vmConfig := vm.Config{ - Tracer: tracer, - Debug: (tracer != nil), + Tracer: tracer, + Debug: (tracer != nil), + EVMInterpreter: ctx.String(utils.EVMInterpreterFlag.Name), } + + if vmConfig.EVMInterpreter != "" { + vm.InitEVMCEVM(vmConfig.EVMInterpreter) + } + // Construct the chainconfig var chainConfig ctypes.ChainConfigurator if cConf, extraEips, err := tests.GetChainConfig(ctx.String(ForknameFlag.Name)); err != nil { diff --git a/cmd/evm/main.go b/cmd/evm/main.go index 5d4fefeb25..8b73343e4b 100644 --- a/cmd/evm/main.go +++ b/cmd/evm/main.go @@ -23,6 +23,7 @@ import ( "os" "github.com/ethereum/go-ethereum/cmd/evm/internal/t8ntool" + "github.com/ethereum/go-ethereum/cmd/utils" "github.com/ethereum/go-ethereum/internal/flags" "github.com/urfave/cli/v2" ) @@ -132,11 +133,6 @@ var ( Value: true, Usage: "enable return data output", } - EVMInterpreterFlag = &cli.StringFlag{ - Name: "vm.evm", - Usage: "External EVM configuration (default = built-in interpreter)", - Value: "", - } ) var stateTransitionCommand = &cli.Command{ @@ -162,6 +158,7 @@ var stateTransitionCommand = &cli.Command{ t8ntool.ChainIDFlag, t8ntool.RewardFlag, t8ntool.VerbosityFlag, + utils.EVMInterpreterFlag, }, } @@ -222,7 +219,7 @@ func init() { DisableStackFlag, DisableStorageFlag, DisableReturnDataFlag, - EVMInterpreterFlag, + utils.EVMInterpreterFlag, } app.Commands = []*cli.Command{ compileCommand, diff --git a/cmd/evm/runner.go b/cmd/evm/runner.go index 1299e7b195..c4186bb550 100644 --- a/cmd/evm/runner.go +++ b/cmd/evm/runner.go @@ -217,7 +217,7 @@ func runCmd(ctx *cli.Context) error { EVMConfig: vm.Config{ Tracer: tracer, Debug: ctx.Bool(DebugFlag.Name) || ctx.Bool(MachineFlag.Name), - EVMInterpreter: ctx.String(EVMInterpreterFlag.Name), + EVMInterpreter: ctx.String(utils.EVMInterpreterFlag.Name), }, } diff --git a/cmd/evm/staterunner.go b/cmd/evm/staterunner.go index ebb19f6e99..3379040fc7 100644 --- a/cmd/evm/staterunner.go +++ b/cmd/evm/staterunner.go @@ -22,6 +22,7 @@ import ( "fmt" "os" + "github.com/ethereum/go-ethereum/cmd/utils" "github.com/ethereum/go-ethereum/core/state" "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/eth/tracers/logger" @@ -37,8 +38,11 @@ var stateTestCommand = &cli.Command{ Name: "statetest", Usage: "executes the given state tests", ArgsUsage: "", - Flags: []cli.Flag{stateTestEVMCEWASMFlag}, - Category: flags.DevCategory, + Flags: []cli.Flag{ + stateTestEVMCEWASMFlag, + utils.EVMInterpreterFlag, + }, + Category: flags.DevCategory, } var stateTestEVMCEWASMFlag = &cli.StringFlag{ @@ -107,7 +111,13 @@ func stateTestCmd(ctx *cli.Context) error { Tracer: tracer, Debug: ctx.Bool(DebugFlag.Name) || ctx.Bool(MachineFlag.Name), EWASMInterpreter: ctx.String(stateTestEVMCEWASMFlag.Name), + EVMInterpreter: ctx.String(utils.EVMInterpreterFlag.Name), + } + + if cfg.EVMInterpreter != "" { + vm.InitEVMCEVM(cfg.EVMInterpreter) } + results := make([]StatetestResult, 0, len(tests)) for key, test := range tests { for _, st := range test.Subtests(nil) { diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 7ab4906218..9f09953c35 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -2021,10 +2021,12 @@ func SetEthConfig(ctx *cli.Context, stack *node.Node, cfg *ethconfig.Config) { if ctx.IsSet(EWASMInterpreterFlag.Name) { cfg.EWASMInterpreter = ctx.String(EWASMInterpreterFlag.Name) + vm.InitEVMCEwasm(cfg.EWASMInterpreter) } if ctx.IsSet(EVMInterpreterFlag.Name) { cfg.EVMInterpreter = ctx.String(EVMInterpreterFlag.Name) + vm.InitEVMCEVM(cfg.EVMInterpreter) } if ctx.IsSet(RPCGlobalGasCapFlag.Name) { cfg.RPCGasCap = ctx.Uint64(RPCGlobalGasCapFlag.Name)