Skip to content

InvalidOpcodeError

Represents an invalid bytecode/contract error that occurs when an invalid opcode is encountered during EVM execution. This error is typically encountered when the bytecode contains an opcode that is not recognized by the EVM.

Invalid opcode errors can occur due to:

  • Typographical errors in the bytecode.
  • Using opcodes that are not supported by the selected EVM version or hardfork.

To debug an invalid opcode error:

  1. Review Bytecode: Ensure that the bytecode provided is correct and does not contain any invalid opcodes.
  2. Verify Common Configuration: Ensure you are using a common with the correct hardfork and EIPs that support the opcodes used by your contract.
  3. Use TEVM Tracing: Utilize TEVM tracing to step through the bytecode execution and identify where the invalid opcode is encountered.
  4. Inspect Contract Code: Manually inspect the contract code to ensure it compiles correctly and does not include any invalid opcodes.

Example

import { InvalidOpcodeError } from '@tevm/errors'
try {
// Some operation that can throw an InvalidOpcodeError
} catch (error) {
if (error instanceof InvalidOpcodeError) {
console.error(error.message);
// Handle the invalid opcode error
}
}

Param

A human-readable error message.

Param

Additional parameters for the BaseError.

Extends

Constructors

new InvalidOpcodeError()

new InvalidOpcodeError(message?, args?, tag?): InvalidOpcodeError

Constructs an InvalidOpcodeError. Represents an invalid bytecode/contract error that occurs when an invalid opcode is encountered during EVM execution. This error is typically encountered when the bytecode contains an opcode that is not recognized by the EVM.

Invalid opcode errors can occur due to:

  • Typographical errors in the bytecode.
  • Using opcodes that are not supported by the selected EVM version or hardfork.

To debug an invalid opcode error:

  1. Review Bytecode: Ensure that the bytecode provided is correct and does not contain any invalid opcodes.
  2. Verify Common Configuration: Ensure you are using a common with the correct hardfork and EIPs that support the opcodes used by your contract.
  3. Use TEVM Tracing: Utilize TEVM tracing to step through the bytecode execution and identify where the invalid opcode is encountered.
  4. Inspect Contract Code: Manually inspect the contract code to ensure it compiles correctly and does not include any invalid opcodes.

Parameters

message?: string = 'Invalid opcode error occurred.'

Human-readable error message.

args?: InvalidOpcodeErrorParameters = {}

Additional parameters for the BaseError.

tag?: string = 'InvalidOpcodeError'

The tag for the error.}

Returns

InvalidOpcodeError

Overrides

ExecutionError.constructor

Defined in

packages/errors/src/ethereum/ethereumjs/InvalidOpcodeError.js:74

Properties

_tag

_tag: string

Same as name, used internally.

Inherited from

ExecutionError._tag

Defined in

packages/errors/src/ethereum/BaseError.js:81


cause

cause: any

Inherited from

ExecutionError.cause

Defined in

packages/errors/src/ethereum/BaseError.js:113


code

code: number

Error code, analogous to the code in JSON RPC error.

Inherited from

ExecutionError.code

Defined in

packages/errors/src/ethereum/BaseError.js:111


details

details: string

Inherited from

ExecutionError.details

Defined in

packages/errors/src/ethereum/BaseError.js:90


docsPath

docsPath: undefined | string

Path to the documentation for this error.

Inherited from

ExecutionError.docsPath

Defined in

packages/errors/src/ethereum/BaseError.js:95


message

message: string

Human-readable error message.

Inherited from

ExecutionError.message

Defined in

node_modules/.pnpm/typescript@5.5.2/node_modules/typescript/lib/lib.es5.d.ts:1077


metaMessages

metaMessages: undefined | string[]

Additional meta messages for more context.

Inherited from

ExecutionError.metaMessages

Defined in

packages/errors/src/ethereum/BaseError.js:99


name

name: string

The name of the error, used to discriminate errors.

Inherited from

ExecutionError.name

Defined in

node_modules/.pnpm/typescript@5.5.2/node_modules/typescript/lib/lib.es5.d.ts:1076


shortMessage

shortMessage: string

Inherited from

ExecutionError.shortMessage

Defined in

packages/errors/src/ethereum/BaseError.js:103


stack?

optional stack: string

Inherited from

ExecutionError.stack

Defined in

node_modules/.pnpm/typescript@5.5.2/node_modules/typescript/lib/lib.es5.d.ts:1078


version

version: string

Inherited from

ExecutionError.version

Defined in

packages/errors/src/ethereum/BaseError.js:107


EVMErrorMessage

static EVMErrorMessage: EvmErrorMessage = EVMErrorMessage.INVALID_OPCODE

Defined in

packages/errors/src/ethereum/ethereumjs/InvalidOpcodeError.js:54


prepareStackTrace()?

static optional prepareStackTrace: (err, stackTraces) => any

Optional override for formatting stack traces

See

https://v8.dev/docs/stack-trace-api#customizing-stack-traces

Parameters

err: Error

stackTraces: CallSite[]

Returns

any

Inherited from

ExecutionError.prepareStackTrace

Defined in

node_modules/.pnpm/@types+node@20.14.8/node_modules/@types/node/globals.d.ts:28


stackTraceLimit

static stackTraceLimit: number

Inherited from

ExecutionError.stackTraceLimit

Defined in

node_modules/.pnpm/@types+node@20.14.8/node_modules/@types/node/globals.d.ts:30

Methods

walk()

walk(fn?): unknown

Walks through the error chain.

Parameters

fn?: Function

A function to execute on each error in the chain.

Returns

unknown

The first error that matches the function, or the original error.

Inherited from

ExecutionError.walk

Defined in

packages/errors/src/ethereum/BaseError.js:136


captureStackTrace()

captureStackTrace(targetObject, constructorOpt)

static captureStackTrace(targetObject, constructorOpt?): void

Create .stack property on a target object

Parameters

targetObject: object

constructorOpt?: Function

Returns

void

Inherited from

ExecutionError.captureStackTrace

Defined in

node_modules/.pnpm/@types+node@20.14.8/node_modules/@types/node/globals.d.ts:21

captureStackTrace(targetObject, constructorOpt)

static captureStackTrace(targetObject, constructorOpt?): void

Create .stack property on a target object

Parameters

targetObject: object

constructorOpt?: Function

Returns

void

Inherited from

ExecutionError.captureStackTrace

Defined in

node_modules/.pnpm/@types+node@22.1.0/node_modules/@types/node/globals.d.ts:22

captureStackTrace(targetObject, constructorOpt)

static captureStackTrace(targetObject, constructorOpt?): void

Create .stack property on a target object

Parameters

targetObject: object

constructorOpt?: Function

Returns

void

Inherited from

ExecutionError.captureStackTrace

Defined in

node_modules/.pnpm/bun-types@1.1.18/node_modules/bun-types/globals.d.ts:1613

captureStackTrace(targetObject, constructorOpt)

static captureStackTrace(targetObject, constructorOpt?): void

Create .stack property on a target object

Parameters

targetObject: object

constructorOpt?: Function

Returns

void

Inherited from

ExecutionError.captureStackTrace

Defined in

node_modules/.pnpm/@types+node@20.12.14/node_modules/@types/node/globals.d.ts:21