EVMC
|
The message describing an EVM call, including a zero-depth calls from a transaction origin. More...
#include <evmc.h>
Public Attributes | |
enum evmc_call_kind | kind |
The kind of the call. | |
uint32_t | flags |
Additional flags modifying the call execution behavior. | |
int32_t | depth |
The present depth of the message call stack. | |
int64_t | gas |
The amount of gas available to the message execution. | |
evmc_address | recipient |
The recipient of the message. | |
evmc_address | sender |
The sender of the message. | |
const uint8_t * | input_data |
The message input data. | |
size_t | input_size |
The size of the message input data. | |
evmc_uint256be | value |
The amount of Ether transferred with the message. | |
evmc_bytes32 | create2_salt |
The optional value used in new contract address construction. | |
evmc_address | code_address |
The address of the code to be executed. | |
const uint8_t * | code |
The code to be executed. | |
size_t | code_size |
The length of the code to be executed. | |
The message describing an EVM call, including a zero-depth calls from a transaction origin.
Most of the fields are modelled by the section 8. Message Call of the Ethereum Yellow Paper.
evmc_address evmc_message::code_address |
The address of the code to be executed.
For EVMC_CALLCODE or EVMC_DELEGATECALL this may be different from the evmc_message::recipient. Not required when invoking evmc_execute_fn(), only when invoking evmc_call_fn(). Ignored if kind is EVMC_CREATE, EVMC_CREATE2 or EVMC_EOFCREATE.
In case of EVMC_CAPABILITY_PRECOMPILES implementation, this fields should be inspected to identify the requested precompile.
Defined as c
in the Yellow Paper.
size_t evmc_message::code_size |
evmc_bytes32 evmc_message::create2_salt |
The optional value used in new contract address construction.
Needed only for a Host to calculate created address when kind is EVMC_CREATE2 or EVMC_EOFCREATE. Ignored in evmc_execute_fn().
int32_t evmc_message::depth |
uint32_t evmc_message::flags |
Additional flags modifying the call execution behavior.
In the current version the only valid values are EVMC_STATIC or 0.
int64_t evmc_message::gas |
const uint8_t* evmc_message::input_data |
size_t evmc_message::input_size |
enum evmc_call_kind evmc_message::kind |
evmc_address evmc_message::recipient |
The recipient of the message.
This is the address of the account which storage/balance/nonce is going to be modified by the message execution. In case of EVMC_CALL, this is also the account where the message value evmc_message::value is going to be transferred. For EVMC_CALLCODE or EVMC_DELEGATECALL, this may be different from the evmc_message::code_address.
Defined as r
in the Yellow Paper.
evmc_address evmc_message::sender |
The sender of the message.
The address of the sender of a message call defined as s
in the Yellow Paper. This must be the message recipient of the message at the previous (lower) depth, except for the EVMC_DELEGATECALL where recipient is the 2 levels above the present depth. At the depth 0 this must be the transaction origin.
evmc_uint256be evmc_message::value |
The amount of Ether transferred with the message.
This is transferred value for EVMC_CALL or apparent value for EVMC_DELEGATECALL. Defined as v
or v~
in the Yellow Paper.