| 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 | 
| 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.