@ethereumjs/evm
Version:
JavaScript Ethereum Virtual Machine (EVM) implementation
46 lines (41 loc) • 1.67 kB
text/typescript
export type EVMErrorType = (typeof EVMErrorMessage)[keyof typeof EVMErrorMessage]
export const EVMErrorTypeString = 'EVMError'
const EVMErrorMessage = {
OUT_OF_GAS: 'out of gas',
CODESTORE_OUT_OF_GAS: 'code store out of gas',
CODESIZE_EXCEEDS_MAXIMUM: 'code size to deposit exceeds maximum code size',
STACK_UNDERFLOW: 'stack underflow',
STACK_OVERFLOW: 'stack overflow',
INVALID_JUMP: 'invalid JUMP',
INVALID_OPCODE: 'invalid opcode',
OUT_OF_RANGE: 'value out of range',
REVERT: 'revert',
STATIC_STATE_CHANGE: 'static state change',
INTERNAL_ERROR: 'internal error',
CREATE_COLLISION: 'create collision',
STOP: 'stop',
REFUND_EXHAUSTED: 'refund exhausted',
VALUE_OVERFLOW: 'value overflow',
INSUFFICIENT_BALANCE: 'insufficient balance',
INVALID_BYTECODE_RESULT: 'invalid bytecode deployed',
INITCODE_SIZE_VIOLATION: 'initcode exceeds max initcode size',
INVALID_INPUT_LENGTH: 'invalid input length',
INVALID_EOF_FORMAT: 'invalid EOF format',
BLS_12_381_INVALID_INPUT_LENGTH: 'invalid input length',
BLS_12_381_POINT_NOT_ON_CURVE: 'point not on curve',
BLS_12_381_INPUT_EMPTY: 'input is empty',
BLS_12_381_FP_NOT_IN_FIELD: 'fp point not in field',
BN254_FP_NOT_IN_FIELD: 'fp point not in field',
INVALID_COMMITMENT: 'kzg commitment does not match versioned hash',
INVALID_INPUTS: 'kzg inputs invalid',
INVALID_PROOF: 'kzg proof invalid',
} as const
export class EVMError {
error: EVMErrorType
errorType: string
static errorMessages: Record<keyof typeof EVMErrorMessage, EVMErrorType> = EVMErrorMessage
constructor(error: EVMErrorType) {
this.error = error
this.errorType = EVMErrorTypeString
}
}