OutOfGasError
Represents an execution error that occurs when a transaction runs out of gas during execution. This error is typically encountered when the gas provided for a transaction is insufficient to complete its execution.
Out of gas errors can occur due to:
- Insufficient gas provided for complex transactions or loops.
- Incorrect estimation of gas required for certain operations.
- Contracts with high gas consumption in specific functions.
- Non-deterministic gas usage in contracts.
- If TEVM submitted the transaction using
createTransaction: true
and the account being used runs out of gas.
To debug an out of gas error:
- Review Gas Estimates: Ensure that the gas estimate for your transaction is accurate and sufficient. If you provided explicit gas-related parameters, double-check their values.
- Optimize Contract Code: Refactor your smart contract code to reduce gas consumption, especially in loops and complex operations. Remove potential non-deterministic behaviors.
- Use TEVM Tracing: Utilize TEVM tracing to step through the transaction and inspect gas usage.
- Estimate Gas Multiple Times: If using TEVM gas estimations, it might make sense to estimate gas many times and take the worst case to set
gasPrice
. Most nodes executeeth_estimateGas
10 times, while TEVM runs it only once. - Use Other Tools: Use other tools with gas profiling such as Foundry.
Example
try { // Some operation that can throw an OutOfGasError} catch (error) { if (error instanceof OutOfGasError) { console.error(error.message); // Handle the out of gas error }}
Param
A human-readable error message.
Param
Additional parameters for the BaseError.
Extends
Constructors
new OutOfGasError()
new OutOfGasError(
message
?,args
?,tag
?):OutOfGasError
Constructs an OutOfGasError. Represents an execution error that occurs when a transaction runs out of gas during execution. This error is typically encountered when the gas provided for a transaction is insufficient to complete its execution.
Out of gas errors can occur due to:
- Insufficient gas provided for complex transactions or loops.
- Incorrect estimation of gas required for certain operations.
- Contracts with high gas consumption in specific functions.
- Non-deterministic gas usage in contracts.
- If TEVM submitted the transaction using
createTransaction: true
and the account being used runs out of gas.
To debug an out of gas error:
- Review Gas Estimates: Ensure that the gas estimate for your transaction is accurate and sufficient. If you provided explicit gas-related parameters, double-check their values.
- Optimize Contract Code: Refactor your smart contract code to reduce gas consumption, especially in loops and complex operations. Remove potential non-deterministic behaviors.
- Use TEVM Tracing: Utilize TEVM tracing to step through the transaction and inspect gas usage.
- Estimate Gas Multiple Times: If using TEVM gas estimations, it might make sense to estimate gas many times and take the worst case to set
gasPrice
. Most nodes executeeth_estimateGas
10 times, while TEVM runs it only once. - Use Other Tools: Use other tools with gas profiling such as Foundry.
Parameters
• message?: string
= 'Out of gas error occurred.'
Human-readable error message.
• args?: OutOfGasErrorParameters
= {}
Additional parameters for the BaseError.
• tag?: string
= 'OutOfGasError'
The tag for the error.
Returns
Overrides
GasLimitExceededError
.constructor
Defined in
packages/errors/src/ethereum/ethereumjs/OutOfGasError.js:81
Properties
_tag
_tag:
string
Same as name, used internally.
Inherited from
Defined in
packages/errors/src/ethereum/BaseError.js:81
cause
cause:
any
Inherited from
Defined in
packages/errors/src/ethereum/BaseError.js:113
code
code:
number
Error code, analogous to the code in JSON RPC error.
Inherited from
Defined in
packages/errors/src/ethereum/BaseError.js:111
details
details:
string
Inherited from
Defined in
packages/errors/src/ethereum/BaseError.js:90
docsPath
docsPath:
undefined
|string
Path to the documentation for this error.
Inherited from
GasLimitExceededError
.docsPath
Defined in
packages/errors/src/ethereum/BaseError.js:95
message
message:
string
Human-readable error message.
Inherited from
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
GasLimitExceededError
.metaMessages
Defined in
packages/errors/src/ethereum/BaseError.js:99
name
name:
string
The name of the error, used to discriminate errors.
Inherited from
Defined in
node_modules/.pnpm/typescript@5.5.2/node_modules/typescript/lib/lib.es5.d.ts:1076
shortMessage
shortMessage:
string
Inherited from
GasLimitExceededError
.shortMessage
Defined in
packages/errors/src/ethereum/BaseError.js:103
stack?
optional
stack:string
Inherited from
Defined in
node_modules/.pnpm/typescript@5.5.2/node_modules/typescript/lib/lib.es5.d.ts:1078
version
version:
string
Inherited from
Defined in
packages/errors/src/ethereum/BaseError.js:107
EVMErrorMessage
static
EVMErrorMessage:EvmErrorMessage
=EVMErrorMessage.OUT_OF_GAS
Defined in
packages/errors/src/ethereum/ethereumjs/OutOfGasError.js:57
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
GasLimitExceededError
.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
GasLimitExceededError
.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
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
GasLimitExceededError
.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
GasLimitExceededError
.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
GasLimitExceededError
.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
GasLimitExceededError
.captureStackTrace
Defined in
node_modules/.pnpm/@types+node@20.12.14/node_modules/@types/node/globals.d.ts:21