Documentation
      ¶
    
    
  
    
  
    Index ¶
- func NewMarkdownLogger(cfg *Config, writer io.Writer) *mdLogger
 - func WriteLogs(writer io.Writer, logs []*types.Log)
 - func WriteTrace(writer io.Writer, logs []StructLog)
 - type AccessListTracer
 - func (a *AccessListTracer) AccessList() types.AccessList
 - func (*AccessListTracer) CaptureEnd(output []byte, gasUsed uint64, err error)
 - func (*AccessListTracer) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, ...)
 - func (*AccessListTracer) CaptureExit(output []byte, gasUsed uint64, err error)
 - func (*AccessListTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, ...)
 - func (a *AccessListTracer) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, ...)
 - func (a *AccessListTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, ...)
 - func (*AccessListTracer) CaptureTxEnd(restGas uint64)
 - func (*AccessListTracer) CaptureTxStart(gasLimit uint64)
 - func (a *AccessListTracer) Equal(other *AccessListTracer) bool
 
- type Config
 - type ExecutionResult
 - type JSONLogger
 - func (l *JSONLogger) CaptureEnd(output []byte, gasUsed uint64, err error)
 - func (l *JSONLogger) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, ...)
 - func (l *JSONLogger) CaptureExit(output []byte, gasUsed uint64, err error)
 - func (l *JSONLogger) CaptureFault(pc uint64, op vm.OpCode, gas uint64, cost uint64, scope *vm.ScopeContext, ...)
 - func (l *JSONLogger) CaptureStart(env *vm.EVM, from, to common.Address, create bool, input []byte, gas uint64, ...)
 - func (l *JSONLogger) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, ...)
 - func (l *JSONLogger) CaptureTxEnd(restGas uint64)
 - func (l *JSONLogger) CaptureTxStart(gasLimit uint64)
 
- type Storage
 - type StructLog
 - type StructLogRes
 - type StructLogger
 - func (l *StructLogger) CaptureEnd(output []byte, gasUsed uint64, err error)
 - func (l *StructLogger) CaptureEnter(typ vm.OpCode, from common.Address, to common.Address, input []byte, ...)
 - func (l *StructLogger) CaptureExit(output []byte, gasUsed uint64, err error)
 - func (l *StructLogger) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, ...)
 - func (l *StructLogger) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, ...)
 - func (l *StructLogger) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, ...)
 - func (l *StructLogger) CaptureTxEnd(restGas uint64)
 - func (l *StructLogger) CaptureTxStart(gasLimit uint64)
 - func (l *StructLogger) Error() error
 - func (l *StructLogger) GetResult() (json.RawMessage, error)
 - func (l *StructLogger) Output() []byte
 - func (l *StructLogger) Reset()
 - func (l *StructLogger) Stop(err error)
 - func (l *StructLogger) StructLogs() []StructLog
 
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewMarkdownLogger ¶
NewMarkdownLogger creates a logger which outputs information in a format adapted for human readability, and is also a valid markdown table
func WriteTrace ¶
WriteTrace writes a formatted trace to the given writer
Types ¶
type AccessListTracer ¶
type AccessListTracer struct {
	// contains filtered or unexported fields
}
    AccessListTracer is a tracer that accumulates touched accounts and storage slots into an internal set.
func NewAccessListTracer ¶
func NewAccessListTracer(acl types.AccessList, from, to common.Address, precompiles []common.Address) *AccessListTracer
NewAccessListTracer creates a new tracer that can generate AccessLists. An optional AccessList can be specified to occupy slots and addresses in the resulting accesslist.
func (*AccessListTracer) AccessList ¶
func (a *AccessListTracer) AccessList() types.AccessList
AccessList returns the current accesslist maintained by the tracer.
func (*AccessListTracer) CaptureEnd ¶
func (*AccessListTracer) CaptureEnd(output []byte, gasUsed uint64, err error)
func (*AccessListTracer) CaptureEnter ¶
func (*AccessListTracer) CaptureExit ¶
func (*AccessListTracer) CaptureExit(output []byte, gasUsed uint64, err error)
func (*AccessListTracer) CaptureFault ¶
func (*AccessListTracer) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, err error)
func (*AccessListTracer) CaptureStart ¶
func (*AccessListTracer) CaptureState ¶
func (a *AccessListTracer) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error)
CaptureState captures all opcodes that touch storage or addresses and adds them to the accesslist.
func (*AccessListTracer) CaptureTxEnd ¶ added in v0.8.13
func (*AccessListTracer) CaptureTxEnd(restGas uint64)
func (*AccessListTracer) CaptureTxStart ¶ added in v0.8.13
func (*AccessListTracer) CaptureTxStart(gasLimit uint64)
func (*AccessListTracer) Equal ¶
func (a *AccessListTracer) Equal(other *AccessListTracer) bool
Equal returns if the content of two access list traces are equal.
type Config ¶
type Config struct {
	EnableMemory     bool // enable memory capture
	DisableStack     bool // disable stack capture
	DisableStorage   bool // disable storage capture
	EnableReturnData bool // enable return data capture
	Debug            bool // print output during capture end
	Limit            int  // maximum length of output, but zero means unlimited
	// Chain overrides, can be used to execute a trace using future fork rules
	Overrides *params.ChainConfig `json:"overrides,omitempty"`
}
    Config are the configuration options for structured logger the EVM
type ExecutionResult ¶ added in v0.8.13
type ExecutionResult struct {
	Gas         uint64         `json:"gas"`
	Failed      bool           `json:"failed"`
	ReturnValue string         `json:"returnValue"`
	StructLogs  []StructLogRes `json:"structLogs"`
}
    ExecutionResult groups all structured logs emitted by the EVM while replaying a transaction in debug mode as well as transaction execution status, the amount of gas used and the return value
type JSONLogger ¶
type JSONLogger struct {
	// contains filtered or unexported fields
}
    func NewJSONLogger ¶
func NewJSONLogger(cfg *Config, writer io.Writer) *JSONLogger
NewJSONLogger creates a new EVM tracer that prints execution steps as JSON objects into the provided stream.
func (*JSONLogger) CaptureEnd ¶
func (l *JSONLogger) CaptureEnd(output []byte, gasUsed uint64, err error)
CaptureEnd is triggered at end of execution.
func (*JSONLogger) CaptureEnter ¶
func (*JSONLogger) CaptureExit ¶
func (l *JSONLogger) CaptureExit(output []byte, gasUsed uint64, err error)
func (*JSONLogger) CaptureFault ¶
func (l *JSONLogger) CaptureFault(pc uint64, op vm.OpCode, gas uint64, cost uint64, scope *vm.ScopeContext, depth int, err error)
func (*JSONLogger) CaptureStart ¶
func (*JSONLogger) CaptureState ¶
func (l *JSONLogger) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error)
CaptureState outputs state information on the logger.
func (*JSONLogger) CaptureTxEnd ¶ added in v0.8.13
func (l *JSONLogger) CaptureTxEnd(restGas uint64)
func (*JSONLogger) CaptureTxStart ¶ added in v0.8.13
func (l *JSONLogger) CaptureTxStart(gasLimit uint64)
type StructLog ¶
type StructLog struct {
	Pc            uint64                      `json:"pc"`
	Op            vm.OpCode                   `json:"op"`
	Gas           uint64                      `json:"gas"`
	GasCost       uint64                      `json:"gasCost"`
	Memory        []byte                      `json:"memory,omitempty"`
	MemorySize    int                         `json:"memSize"`
	Stack         []uint256.Int               `json:"stack"`
	ReturnData    []byte                      `json:"returnData,omitempty"`
	Storage       map[common.Hash]common.Hash `json:"-"`
	Depth         int                         `json:"depth"`
	RefundCounter uint64                      `json:"refund"`
	Err           error                       `json:"-"`
}
    StructLog is emitted to the EVM each cycle and lists information about the current internal state prior to the execution of the statement.
func (*StructLog) ErrorString ¶
ErrorString formats the log's error as a string.
func (StructLog) MarshalJSON ¶
MarshalJSON marshals as JSON.
func (*StructLog) UnmarshalJSON ¶
UnmarshalJSON unmarshals from JSON.
type StructLogRes ¶ added in v0.8.13
type StructLogRes struct {
	Pc            uint64             `json:"pc"`
	Op            string             `json:"op"`
	Gas           uint64             `json:"gas"`
	GasCost       uint64             `json:"gasCost"`
	Depth         int                `json:"depth"`
	Error         string             `json:"error,omitempty"`
	Stack         *[]string          `json:"stack,omitempty"`
	ReturnData    string             `json:"returnData,omitempty"`
	Memory        *[]string          `json:"memory,omitempty"`
	Storage       *map[string]string `json:"storage,omitempty"`
	RefundCounter uint64             `json:"refund,omitempty"`
}
    StructLogRes stores a structured log emitted by the EVM while replaying a transaction in debug mode
type StructLogger ¶
type StructLogger struct {
	// contains filtered or unexported fields
}
    StructLogger is an EVM state logger and implements EVMLogger.
StructLogger can capture state based on the given Log configuration and also keeps a track record of modified storage which is used in reporting snapshots of the contract their storage.
func NewStructLogger ¶
func NewStructLogger(cfg *Config) *StructLogger
NewStructLogger returns a new logger
func (*StructLogger) CaptureEnd ¶
func (l *StructLogger) CaptureEnd(output []byte, gasUsed uint64, err error)
CaptureEnd is called after the call finishes to finalize the tracing.
func (*StructLogger) CaptureEnter ¶
func (*StructLogger) CaptureExit ¶
func (l *StructLogger) CaptureExit(output []byte, gasUsed uint64, err error)
func (*StructLogger) CaptureFault ¶
func (l *StructLogger) CaptureFault(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, depth int, err error)
CaptureFault implements the EVMLogger interface to trace an execution fault while running an opcode.
func (*StructLogger) CaptureStart ¶
func (l *StructLogger) CaptureStart(env *vm.EVM, from common.Address, to common.Address, create bool, input []byte, gas uint64, value *big.Int)
CaptureStart implements the EVMLogger interface to initialize the tracing operation.
func (*StructLogger) CaptureState ¶
func (l *StructLogger) CaptureState(pc uint64, op vm.OpCode, gas, cost uint64, scope *vm.ScopeContext, rData []byte, depth int, err error)
CaptureState logs a new structured log message and pushes it out to the environment
CaptureState also tracks SLOAD/SSTORE ops to track storage change.
func (*StructLogger) CaptureTxEnd ¶ added in v0.8.13
func (l *StructLogger) CaptureTxEnd(restGas uint64)
func (*StructLogger) CaptureTxStart ¶ added in v0.8.13
func (l *StructLogger) CaptureTxStart(gasLimit uint64)
func (*StructLogger) Error ¶
func (l *StructLogger) Error() error
Error returns the VM error captured by the trace.
func (*StructLogger) GetResult ¶ added in v0.8.13
func (l *StructLogger) GetResult() (json.RawMessage, error)
func (*StructLogger) Output ¶
func (l *StructLogger) Output() []byte
Output returns the VM return value captured by the trace.
func (*StructLogger) Reset ¶
func (l *StructLogger) Reset()
Reset clears the data held by the logger.
func (*StructLogger) Stop ¶ added in v0.8.13
func (l *StructLogger) Stop(err error)
Stop terminates execution of the tracer at the first opportune moment.
func (*StructLogger) StructLogs ¶
func (l *StructLogger) StructLogs() []StructLog
StructLogs returns the captured log entries.