-
Notifications
You must be signed in to change notification settings - Fork 846
Expand file tree
/
Copy patherrors.ts
More file actions
56 lines (48 loc) · 1.85 KB
/
errors.ts
File metadata and controls
56 lines (48 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import { EthereumJSError } from '@ethereumjs/util'
import type { EOFError } from './eof/errors.js'
// TODO: merge EOF errors in here
export enum EVMErrorCode {
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',
INVALID_PRECOMPILE = 'invalid precompile',
// BLS errors
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 errors
BN254_FP_NOT_IN_FIELD = 'fp point not in field',
// Point Evaluation Errors
INVALID_COMMITMENT = 'kzg commitment does not match versioned hash',
INVALID_INPUTS = 'kzg inputs invalid',
INVALID_PROOF = 'kzg proof invalid',
}
type EVMErrorType =
| {
code: EVMErrorCode | EOFError
}
| { code: EVMErrorCode.REVERT; revertBytes: Uint8Array }
export class EVMError extends EthereumJSError<EVMErrorType> {
constructor(type: EVMErrorType, message?: string) {
super(type, message)
}
// TODO: add helper method to format the error in a human readable way
}