gitlab.com/flarenetwork/coreth@v0.1.1/core/vm/errors.go (about) 1 // (c) 2019-2020, Ava Labs, Inc. 2 // 3 // This file is a derived work, based on the go-ethereum library whose original 4 // notices appear below. 5 // 6 // It is distributed under a license compatible with the licensing terms of the 7 // original code from which it is derived. 8 // 9 // Much love to the original authors for their work. 10 // ********** 11 // Copyright 2014 The go-ethereum Authors 12 // This file is part of the go-ethereum library. 13 // 14 // The go-ethereum library is free software: you can redistribute it and/or modify 15 // it under the terms of the GNU Lesser General Public License as published by 16 // the Free Software Foundation, either version 3 of the License, or 17 // (at your option) any later version. 18 // 19 // The go-ethereum library is distributed in the hope that it will be useful, 20 // but WITHOUT ANY WARRANTY; without even the implied warranty of 21 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 // GNU Lesser General Public License for more details. 23 // 24 // You should have received a copy of the GNU Lesser General Public License 25 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. 26 27 package vm 28 29 import ( 30 "errors" 31 "fmt" 32 ) 33 34 // List evm execution errors 35 var ( 36 ErrOutOfGas = errors.New("out of gas") 37 ErrCodeStoreOutOfGas = errors.New("contract creation code storage out of gas") 38 ErrDepth = errors.New("max call depth exceeded") 39 ErrInsufficientBalance = errors.New("insufficient balance for transfer") 40 ErrContractAddressCollision = errors.New("contract address collision") 41 ErrExecutionReverted = errors.New("execution reverted") 42 ErrMaxCodeSizeExceeded = errors.New("max code size exceeded") 43 ErrInvalidJump = errors.New("invalid jump destination") 44 ErrWriteProtection = errors.New("write protection") 45 ErrReturnDataOutOfBounds = errors.New("return data out of bounds") 46 ErrGasUintOverflow = errors.New("gas uint64 overflow") 47 ErrInvalidCode = errors.New("invalid code: must not begin with 0xef") 48 ) 49 50 // ErrStackUnderflow wraps an evm error when the items on the stack less 51 // than the minimal requirement. 52 type ErrStackUnderflow struct { 53 stackLen int 54 required int 55 } 56 57 func (e *ErrStackUnderflow) Error() string { 58 return fmt.Sprintf("stack underflow (%d <=> %d)", e.stackLen, e.required) 59 } 60 61 // ErrStackOverflow wraps an evm error when the items on the stack exceeds 62 // the maximum allowance. 63 type ErrStackOverflow struct { 64 stackLen int 65 limit int 66 } 67 68 func (e *ErrStackOverflow) Error() string { 69 return fmt.Sprintf("stack limit reached %d (%d)", e.stackLen, e.limit) 70 } 71 72 // ErrInvalidOpCode wraps an evm error when an invalid opcode is encountered. 73 type ErrInvalidOpCode struct { 74 opcode OpCode 75 } 76 77 func (e *ErrInvalidOpCode) Error() string { return fmt.Sprintf("invalid opcode: %s", e.opcode) }