forked from cerc-io/plugeth
core/vm: remove logging and add section labels to struct logs (#14782)
This commit is contained in:
parent
1802682f65
commit
3e0dbe0eaa
@ -23,7 +23,6 @@ import (
|
|||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
"github.com/ethereum/go-ethereum/log"
|
|
||||||
"github.com/ethereum/go-ethereum/params"
|
"github.com/ethereum/go-ethereum/params"
|
||||||
"golang.org/x/crypto/ripemd160"
|
"golang.org/x/crypto/ripemd160"
|
||||||
)
|
)
|
||||||
@ -76,14 +75,12 @@ func (c *ecrecover) Run(in []byte) ([]byte, error) {
|
|||||||
|
|
||||||
// tighter sig s values in homestead only apply to tx sigs
|
// tighter sig s values in homestead only apply to tx sigs
|
||||||
if !allZero(in[32:63]) || !crypto.ValidateSignatureValues(v, r, s, false) {
|
if !allZero(in[32:63]) || !crypto.ValidateSignatureValues(v, r, s, false) {
|
||||||
log.Trace("ECRECOVER error: v, r or s value invalid")
|
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
// v needs to be at the end for libsecp256k1
|
// v needs to be at the end for libsecp256k1
|
||||||
pubKey, err := crypto.Ecrecover(in[:32], append(in[64:128], v))
|
pubKey, err := crypto.Ecrecover(in[:32], append(in[64:128], v))
|
||||||
// make sure the public key is a valid one
|
// make sure the public key is a valid one
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Trace("ECRECOVER failed", "err", err)
|
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,12 +19,10 @@ package vm
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/common"
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/common/math"
|
"github.com/ethereum/go-ethereum/common/math"
|
||||||
"github.com/ethereum/go-ethereum/crypto"
|
"github.com/ethereum/go-ethereum/crypto"
|
||||||
"github.com/ethereum/go-ethereum/log"
|
|
||||||
"github.com/ethereum/go-ethereum/params"
|
"github.com/ethereum/go-ethereum/params"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -122,19 +120,12 @@ func (in *Interpreter) Run(snapshot int, contract *Contract, input []byte) (ret
|
|||||||
)
|
)
|
||||||
contract.Input = input
|
contract.Input = input
|
||||||
|
|
||||||
// User defer pattern to check for an error and, based on the error being nil or not, use all gas and return.
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if err != nil && in.cfg.Debug {
|
if err != nil && in.cfg.Debug {
|
||||||
// XXX For debugging
|
|
||||||
//fmt.Printf("%04d: %8v cost = %-8d stack = %-8d ERR = %v\n", pc, op, cost, stack.len(), err)
|
|
||||||
in.cfg.Tracer.CaptureState(in.evm, pc, op, contract.Gas, cost, mem, stack, contract, in.evm.depth, err)
|
in.cfg.Tracer.CaptureState(in.evm, pc, op, contract.Gas, cost, mem, stack, contract, in.evm.depth, err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
log.Debug("interpreter running contract", "hash", codehash[:])
|
|
||||||
tstart := time.Now()
|
|
||||||
defer log.Debug("interpreter finished running contract", "hash", codehash[:], "elapsed", time.Since(tstart))
|
|
||||||
|
|
||||||
// The Interpreter main run loop (contextual). This loop runs until either an
|
// The Interpreter main run loop (contextual). This loop runs until either an
|
||||||
// explicit STOP, RETURN or SELFDESTRUCT is executed, an error occurred during
|
// explicit STOP, RETURN or SELFDESTRUCT is executed, an error occurred during
|
||||||
// the execution of one of the operations or until the done flag is set by the
|
// the execution of one of the operations or until the done flag is set by the
|
||||||
@ -190,8 +181,6 @@ func (in *Interpreter) Run(snapshot int, contract *Contract, input []byte) (ret
|
|||||||
if in.cfg.Debug {
|
if in.cfg.Debug {
|
||||||
in.cfg.Tracer.CaptureState(in.evm, pc, op, contract.Gas, cost, mem, stack, contract, in.evm.depth, err)
|
in.cfg.Tracer.CaptureState(in.evm, pc, op, contract.Gas, cost, mem, stack, contract, in.evm.depth, err)
|
||||||
}
|
}
|
||||||
// XXX For debugging
|
|
||||||
//fmt.Printf("%04d: %8v cost = %-8d stack = %-8d\n", pc, op, cost, stack.len())
|
|
||||||
|
|
||||||
// execute the operation
|
// execute the operation
|
||||||
res, err := operation.execute(&pc, in.evm, contract, mem, stack)
|
res, err := operation.execute(&pc, in.evm, contract, mem, stack)
|
||||||
|
@ -196,21 +196,28 @@ func (l *StructLogger) StructLogs() []StructLog {
|
|||||||
// WriteTrace writes a formatted trace to the given writer
|
// WriteTrace writes a formatted trace to the given writer
|
||||||
func WriteTrace(writer io.Writer, logs []StructLog) {
|
func WriteTrace(writer io.Writer, logs []StructLog) {
|
||||||
for _, log := range logs {
|
for _, log := range logs {
|
||||||
fmt.Fprintf(writer, "%-10spc=%08d gas=%v cost=%v", log.Op, log.Pc, log.Gas, log.GasCost)
|
fmt.Fprintf(writer, "%-16spc=%08d gas=%v cost=%v", log.Op, log.Pc, log.Gas, log.GasCost)
|
||||||
if log.Err != nil {
|
if log.Err != nil {
|
||||||
fmt.Fprintf(writer, " ERROR: %v", log.Err)
|
fmt.Fprintf(writer, " ERROR: %v", log.Err)
|
||||||
}
|
}
|
||||||
fmt.Fprintf(writer, "\n")
|
fmt.Fprintln(writer)
|
||||||
|
|
||||||
|
if len(log.Stack) > 0 {
|
||||||
|
fmt.Fprintln(writer, "Stack:")
|
||||||
for i := len(log.Stack) - 1; i >= 0; i-- {
|
for i := len(log.Stack) - 1; i >= 0; i-- {
|
||||||
fmt.Fprintf(writer, "%08d %x\n", len(log.Stack)-i-1, math.PaddedBigBytes(log.Stack[i], 32))
|
fmt.Fprintf(writer, "%08d %x\n", len(log.Stack)-i-1, math.PaddedBigBytes(log.Stack[i], 32))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if len(log.Memory) > 0 {
|
||||||
|
fmt.Fprintln(writer, "Memory:")
|
||||||
fmt.Fprint(writer, hex.Dump(log.Memory))
|
fmt.Fprint(writer, hex.Dump(log.Memory))
|
||||||
|
}
|
||||||
|
if len(log.Storage) > 0 {
|
||||||
|
fmt.Fprintln(writer, "Storage:")
|
||||||
for h, item := range log.Storage {
|
for h, item := range log.Storage {
|
||||||
fmt.Fprintf(writer, "%x: %x\n", h, item)
|
fmt.Fprintf(writer, "%x: %x\n", h, item)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
fmt.Fprintln(writer)
|
fmt.Fprintln(writer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user