diff options
author | Martin Holst Swende <martin@swende.se> | 2018-10-15 18:28:44 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2018-12-10 18:33:50 +0800 |
commit | 42a914a84ffcc5d123af400c2cbcd34b05e2b0b3 (patch) | |
tree | 268f1b8388608016babcc11c84a37d22638f33c5 /cmd/evm | |
parent | 09d588e0da77c1ed150d7274f66a67dcaecab80c (diff) | |
download | dexon-42a914a84ffcc5d123af400c2cbcd34b05e2b0b3.tar.gz dexon-42a914a84ffcc5d123af400c2cbcd34b05e2b0b3.tar.zst dexon-42a914a84ffcc5d123af400c2cbcd34b05e2b0b3.zip |
cmd/evm, core/vm, eth: implement api methods to do stdjson dump to local filesystem
Diffstat (limited to 'cmd/evm')
-rw-r--r-- | cmd/evm/json_logger.go | 84 | ||||
-rw-r--r-- | cmd/evm/runner.go | 2 | ||||
-rw-r--r-- | cmd/evm/staterunner.go | 2 |
3 files changed, 2 insertions, 86 deletions
diff --git a/cmd/evm/json_logger.go b/cmd/evm/json_logger.go deleted file mode 100644 index 50cb4f0e4..000000000 --- a/cmd/evm/json_logger.go +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2017 The go-ethereum Authors -// This file is part of go-ethereum. -// -// go-ethereum is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// go-ethereum is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>. - -package main - -import ( - "encoding/json" - "io" - "math/big" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/math" - "github.com/ethereum/go-ethereum/core/vm" -) - -type JSONLogger struct { - encoder *json.Encoder - cfg *vm.LogConfig -} - -// NewJSONLogger creates a new EVM tracer that prints execution steps as JSON objects -// into the provided stream. -func NewJSONLogger(cfg *vm.LogConfig, writer io.Writer) *JSONLogger { - return &JSONLogger{json.NewEncoder(writer), cfg} -} - -func (l *JSONLogger) CaptureStart(from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int) error { - return nil -} - -// CaptureState outputs state information on the logger. -func (l *JSONLogger) CaptureState(env *vm.EVM, pc uint64, op vm.OpCode, gas, cost uint64, memory *vm.Memory, stack *vm.Stack, contract *vm.Contract, depth int, err error) error { - log := vm.StructLog{ - Pc: pc, - Op: op, - Gas: gas, - GasCost: cost, - MemorySize: memory.Len(), - Storage: nil, - Depth: depth, - RefundCounter: env.StateDB.GetRefund(), - Err: err, - } - if !l.cfg.DisableMemory { - log.Memory = memory.Data() - } - if !l.cfg.DisableStack { - log.Stack = stack.Data() - } - return l.encoder.Encode(log) -} - -// CaptureFault outputs state information on the logger. -func (l *JSONLogger) CaptureFault(env *vm.EVM, pc uint64, op vm.OpCode, gas, cost uint64, memory *vm.Memory, stack *vm.Stack, contract *vm.Contract, depth int, err error) error { - return nil -} - -// CaptureEnd is triggered at end of execution. -func (l *JSONLogger) CaptureEnd(output []byte, gasUsed uint64, t time.Duration, err error) error { - type endLog struct { - Output string `json:"output"` - GasUsed math.HexOrDecimal64 `json:"gasUsed"` - Time time.Duration `json:"time"` - Err string `json:"error,omitempty"` - } - if err != nil { - return l.encoder.Encode(endLog{common.Bytes2Hex(output), math.HexOrDecimal64(gasUsed), t, err.Error()}) - } - return l.encoder.Encode(endLog{common.Bytes2Hex(output), math.HexOrDecimal64(gasUsed), t, ""}) -} diff --git a/cmd/evm/runner.go b/cmd/evm/runner.go index a9c8a38ca..54b67ce10 100644 --- a/cmd/evm/runner.go +++ b/cmd/evm/runner.go @@ -89,7 +89,7 @@ func runCmd(ctx *cli.Context) error { genesisConfig *core.Genesis ) if ctx.GlobalBool(MachineFlag.Name) { - tracer = NewJSONLogger(logconfig, os.Stdout) + tracer = vm.NewJSONLogger(logconfig, os.Stdout) } else if ctx.GlobalBool(DebugFlag.Name) { debugLogger = vm.NewStructLogger(logconfig) tracer = debugLogger diff --git a/cmd/evm/staterunner.go b/cmd/evm/staterunner.go index 06c9be380..b3c69d9b9 100644 --- a/cmd/evm/staterunner.go +++ b/cmd/evm/staterunner.go @@ -68,7 +68,7 @@ func stateTestCmd(ctx *cli.Context) error { ) switch { case ctx.GlobalBool(MachineFlag.Name): - tracer = NewJSONLogger(config, os.Stderr) + tracer = vm.NewJSONLogger(config, os.Stderr) case ctx.GlobalBool(DebugFlag.Name): debugger = vm.NewStructLogger(config) |