StatusCode

Type Alias StatusCode 

Source
pub type StatusCode = evmc_status_code;
Expand description

EVMC status code.

Aliased Type§

#[repr(i32)]
pub enum StatusCode {
Show 21 variants EVMC_SUCCESS = 0, EVMC_FAILURE = 1, EVMC_REVERT = 2, EVMC_OUT_OF_GAS = 3, EVMC_INVALID_INSTRUCTION = 4, EVMC_UNDEFINED_INSTRUCTION = 5, EVMC_STACK_OVERFLOW = 6, EVMC_STACK_UNDERFLOW = 7, EVMC_BAD_JUMP_DESTINATION = 8, EVMC_INVALID_MEMORY_ACCESS = 9, EVMC_CALL_DEPTH_EXCEEDED = 10, EVMC_STATIC_MODE_VIOLATION = 11, EVMC_PRECOMPILE_FAILURE = 12, EVMC_CONTRACT_VALIDATION_FAILURE = 13, EVMC_ARGUMENT_OUT_OF_RANGE = 14, EVMC_WASM_UNREACHABLE_INSTRUCTION = 15, EVMC_WASM_TRAP = 16, EVMC_INSUFFICIENT_BALANCE = 17, EVMC_INTERNAL_ERROR = -1, EVMC_REJECTED = -2, EVMC_OUT_OF_MEMORY = -3,
}

Variants§

§

EVMC_SUCCESS = 0

Execution finished with success.

§

EVMC_FAILURE = 1

Generic execution failure.

§

EVMC_REVERT = 2

Execution terminated with REVERT opcode.

In this case the amount of gas left MAY be non-zero and additional output data MAY be provided in ::evmc_result.

§

EVMC_OUT_OF_GAS = 3

The execution has run out of gas.

§

EVMC_INVALID_INSTRUCTION = 4

The designated INVALID instruction has been hit during execution.

The EIP-141 (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-141.md) defines the instruction 0xfe as INVALID instruction to indicate execution abortion coming from high-level languages. This status code is reported in case this INVALID instruction has been encountered.

§

EVMC_UNDEFINED_INSTRUCTION = 5

An undefined instruction has been encountered.

§

EVMC_STACK_OVERFLOW = 6

The execution has attempted to put more items on the EVM stack than the specified limit.

§

EVMC_STACK_UNDERFLOW = 7

Execution of an opcode has required more items on the EVM stack.

§

EVMC_BAD_JUMP_DESTINATION = 8

Execution has violated the jump destination restrictions.

§

EVMC_INVALID_MEMORY_ACCESS = 9

Tried to read outside memory bounds.

An example is RETURNDATACOPY reading past the available buffer.

§

EVMC_CALL_DEPTH_EXCEEDED = 10

Call depth has exceeded the limit (if any)

§

EVMC_STATIC_MODE_VIOLATION = 11

Tried to execute an operation which is restricted in static mode.

§

EVMC_PRECOMPILE_FAILURE = 12

A call to a precompiled or system contract has ended with a failure.

An example: elliptic curve functions handed invalid EC points.

§

EVMC_CONTRACT_VALIDATION_FAILURE = 13

Contract validation has failed (e.g. due to EVM 1.5 jump validity, Casper’s purity checker or ewasm contract rules).

§

EVMC_ARGUMENT_OUT_OF_RANGE = 14

An argument to a state accessing method has a value outside of the accepted range of values.

§

EVMC_WASM_UNREACHABLE_INSTRUCTION = 15

A WebAssembly unreachable instruction has been hit during execution.

§

EVMC_WASM_TRAP = 16

A WebAssembly trap has been hit during execution. This can be for many reasons, including division by zero, validation errors, etc.

§

EVMC_INSUFFICIENT_BALANCE = 17

The caller does not have enough funds for value transfer.

§

EVMC_INTERNAL_ERROR = -1

EVM implementation generic internal error.

§

EVMC_REJECTED = -2

The execution of the given code and/or message has been rejected by the EVM implementation.

This error SHOULD be used to signal that the EVM is not able to or willing to execute the given code type or message. If an EVM returns the ::EVMC_REJECTED status code, the Client MAY try to execute it in other EVM implementation. For example, the Client tries running a code in the EVM 1.5. If the code is not supported there, the execution falls back to the EVM 1.0.

§

EVMC_OUT_OF_MEMORY = -3

The VM failed to allocate the amount of memory needed for execution.