tracers

package
v1.10.43 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 30, 2023 License: GPL-3.0, GPL-3.0 Imports: 25 Imported by: 0

Documentation

Overview

Package tracers is a manager for transaction tracing engines.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func APIs added in v1.10.34

func APIs(backend Backend) []rpc.API

APIs return the collection of RPC services the tracer package offers.

func GetMemoryCopyPadded added in v1.10.40

func GetMemoryCopyPadded(m *vm.Memory, offset, size int64) ([]byte, error)

GetMemoryCopyPadded returns offset + size as a new slice. It zero-pads the slice if it extends beyond memory bounds.

func RegisterLookup added in v1.10.34

func RegisterLookup(wildcard bool, lookup lookupFunc)

RegisterLookup registers a method as a lookup for tracers, meaning that users can invoke a named tracer through that lookup. If 'wildcard' is true, then the lookup will be placed last. This is typically meant for interpreted engines (js) which can evaluate dynamic user-supplied code.

Types

type API added in v1.10.34

type API struct {
	// contains filtered or unexported fields
}

API is the collection of tracing APIs exposed over the private debugging endpoint.

func NewAPI added in v1.10.34

func NewAPI(backend Backend) *API

NewAPI creates a new API definition for the tracing methods of the Cortex service.

func (*API) IntermediateRoots added in v1.10.34

func (api *API) IntermediateRoots(ctx context.Context, hash common.Hash, config *TraceConfig) ([]common.Hash, error)

IntermediateRoots executes a block (bad- or canon- or side-), and returns a list of intermediate roots: the stateroot after each transaction.

func (*API) StandardTraceBadBlockToFile added in v1.10.34

func (api *API) StandardTraceBadBlockToFile(ctx context.Context, hash common.Hash, config *StdTraceConfig) ([]string, error)

StandardTraceBadBlockToFile dumps the structured logs created during the execution of CVM against a block pulled from the pool of bad ones to the local file system and returns a list of files to the caller.

func (*API) StandardTraceBlockToFile added in v1.10.34

func (api *API) StandardTraceBlockToFile(ctx context.Context, hash common.Hash, config *StdTraceConfig) ([]string, error)

StandardTraceBlockToFile dumps the structured logs created during the execution of CVM to the local file system and returns a list of files to the caller.

func (*API) TraceBadBlock added in v1.10.34

func (api *API) TraceBadBlock(ctx context.Context, hash common.Hash, config *TraceConfig) ([]*txTraceResult, error)

TraceBadBlock returns the structured logs created during the execution of CVM against a block pulled from the pool of bad ones and returns them as a JSON object.

func (*API) TraceBlock added in v1.10.34

func (api *API) TraceBlock(ctx context.Context, blob hexutil.Bytes, config *TraceConfig) ([]*txTraceResult, error)

TraceBlock returns the structured logs created during the execution of CVM and returns them as a JSON object.

func (*API) TraceBlockByHash added in v1.10.34

func (api *API) TraceBlockByHash(ctx context.Context, hash common.Hash, config *TraceConfig) ([]*txTraceResult, error)

TraceBlockByHash returns the structured logs created during the execution of CVM and returns them as a JSON object.

func (*API) TraceBlockByNumber added in v1.10.34

func (api *API) TraceBlockByNumber(ctx context.Context, number rpc.BlockNumber, config *TraceConfig) ([]*txTraceResult, error)

TraceBlockByNumber returns the structured logs created during the execution of CVM and returns them as a JSON object.

func (*API) TraceBlockFromFile added in v1.10.34

func (api *API) TraceBlockFromFile(ctx context.Context, file string, config *TraceConfig) ([]*txTraceResult, error)

TraceBlockFromFile returns the structured logs created during the execution of CVM and returns them as a JSON object.

func (*API) TraceCall added in v1.10.34

func (api *API) TraceCall(ctx context.Context, args ctxcapi.CallArgs, blockNrOrHash rpc.BlockNumberOrHash, config *TraceCallConfig) (interface{}, error)

TraceCall lets you trace a given eth_call. It collects the structured logs created during the execution of CVM if the given transaction was added on top of the provided block and returns them as a JSON object.

func (*API) TraceChain added in v1.10.34

func (api *API) TraceChain(ctx context.Context, start, end rpc.BlockNumber, config *TraceConfig) (*rpc.Subscription, error)

TraceChain returns the structured logs created during the execution of CVM between two blocks (excluding start) and returns them as a JSON object.

func (*API) TraceTransaction added in v1.10.34

func (api *API) TraceTransaction(ctx context.Context, hash common.Hash, config *TraceConfig) (interface{}, error)

TraceTransaction returns the structured logs created during the execution of CVM and returns them as a JSON object.

type Backend added in v1.10.34

type Backend interface {
	HeaderByHash(ctx context.Context, hash common.Hash) (*types.Header, error)
	HeaderByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Header, error)
	BlockByHash(ctx context.Context, hash common.Hash) (*types.Block, error)
	BlockByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Block, error)
	GetTransaction(ctx context.Context, txHash common.Hash) (*types.Transaction, common.Hash, uint64, uint64, error)
	RPCGasCap() uint64
	ChainConfig() *params.ChainConfig
	Engine() consensus.Engine
	ChainDb() ctxcdb.Database
	StateAtBlock(ctx context.Context, block *types.Block, reexec uint64, base *state.StateDB, readOnly bool, preferDisk bool) (*state.StateDB, StateReleaseFunc, error)
	StateAtTransaction(ctx context.Context, block *types.Block, txIndex int, reexec uint64) (*core.Message, vm.BlockContext, *state.StateDB, StateReleaseFunc, error)
}

Backend interface provides the common API services (that are provided by both full and light clients) with access to necessary functions.

type Context added in v1.10.34

type Context struct {
	BlockHash common.Hash // Hash of the block the tx is contained within (zero if dangling tx or call)
	TxIndex   int         // Index of the transaction within a block (zero if dangling tx or call)
	TxHash    common.Hash // Hash of the transaction being traced (zero if dangling call)
}

Context contains some contextual infos for a transaction execution that is not available from within the CVM object.

type StateReleaseFunc added in v1.10.34

type StateReleaseFunc func()

StateReleaseFunc is used to deallocate resources held by constructing a historical state for tracing purposes.

type StdTraceConfig added in v1.10.34

type StdTraceConfig struct {
	logger.Config
	Reexec *uint64
	TxHash common.Hash
}

StdTraceConfig holds extra parameters to standard-json trace functions.

type TraceCallConfig added in v1.10.34

type TraceCallConfig struct {
	TraceConfig
	StateOverrides *ctxcapi.StateOverride
	BlockOverrides *ctxcapi.BlockOverrides
}

TraceCallConfig is the config for traceCall API. It holds one more field to override the state for tracing.

type TraceConfig added in v1.10.34

type TraceConfig struct {
	*logger.Config
	Tracer  *string
	Timeout *string
	Reexec  *uint64
	// Config specific to given tracer. Note struct logger
	// config are historically embedded in main object.
	TracerConfig json.RawMessage
}

TraceConfig holds extra parameters to trace functions.

type Tracer

type Tracer interface {
	vm.CVMLogger
	GetResult() (json.RawMessage, error)
	// Stop terminates execution of the tracer at the first opportune moment.
	Stop(err error)
}

Tracer interface extends vm.CVMLogger and additionally allows collecting the tracing result.

func New

func New(code string, ctx *Context, cfg json.RawMessage) (Tracer, error)

New returns a new instance of a tracer, by iterating through the registered lookups.

Directories

Path Synopsis
js
internal/tracers
Package tracers contains the actual JavaScript tracer assets.
Package tracers contains the actual JavaScript tracer assets.
Package native is a collection of tracers written in go.
Package native is a collection of tracers written in go.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL