EVMC
evmc::HostContext Class Reference

Wrapper around EVMC host context / host interface. More...

#include <evmc.hpp>

Inherits evmc::HostInterface.

Public Member Functions

 HostContext ()=default
 Default constructor for null Host context.
 
 HostContext (const evmc_host_interface &interface, evmc_host_context *ctx) noexcept
 Constructor from the EVMC Host primitives. More...
 
bool account_exists (const address &address) const noexcept final
 Check account existence callback function. More...
 
bytes32 get_storage (const address &address, const bytes32 &key) const noexcept final
 Get storage callback function. More...
 
evmc_storage_status set_storage (const address &address, const bytes32 &key, const bytes32 &value) noexcept final
 Set storage callback function. More...
 
uint256be get_balance (const address &address) const noexcept final
 Get balance callback function. More...
 
size_t get_code_size (const address &address) const noexcept final
 Get code size callback function. More...
 
bytes32 get_code_hash (const address &address) const noexcept final
 Get code hash callback function. More...
 
size_t copy_code (const address &address, size_t code_offset, uint8_t *buffer_data, size_t buffer_size) const noexcept final
 Copy code callback function. More...
 
void selfdestruct (const address &addr, const address &beneficiary) noexcept final
 Selfdestruct callback function. More...
 
result call (const evmc_message &message) noexcept final
 Call callback function. More...
 
evmc_tx_context get_tx_context () const noexcept final
 Get transaction context callback function. More...
 
bytes32 get_block_hash (int64_t number) const noexcept final
 Get block hash callback function. More...
 
void emit_log (const address &addr, const uint8_t *data, size_t data_size, const bytes32 topics[], size_t topics_count) noexcept final
 Emit log callback function. More...
 
evmc_access_status access_account (const address &address) noexcept final
 Access account callback function. More...
 
evmc_access_status access_storage (const address &address, const bytes32 &key) noexcept final
 Access storage callback function. More...
 

Detailed Description

Wrapper around EVMC host context / host interface.

To be used by VM implementations as better alternative to using evmc_host_context directly.

Definition at line 499 of file evmc.hpp.

Constructor & Destructor Documentation

◆ HostContext()

evmc::HostContext::HostContext ( const evmc_host_interface interface,
evmc_host_context ctx 
)
inlinenoexcept

Constructor from the EVMC Host primitives.

Parameters
interfaceThe reference to the Host interface.
ctxThe pointer to the Host context object. This parameter MAY be null.

Definition at line 512 of file evmc.hpp.

513  : host{&interface}, context{ctx}
514  {}

Member Function Documentation

◆ access_account()

evmc_access_status evmc::HostContext::access_account ( const address addr)
inlinefinalvirtualnoexcept

Access account callback function.

Implements evmc::HostInterface.

Definition at line 593 of file evmc.hpp.

594  {
595  return host->access_account(context, &address);
596  }
The big-endian 160-bit hash suitable for keeping an Ethereum address.
Definition: evmc.hpp:26
evmc_access_account_fn access_account
Access account callback function.
Definition: evmc.h:757

◆ access_storage()

evmc_access_status evmc::HostContext::access_storage ( const address addr,
const bytes32 key 
)
inlinefinalvirtualnoexcept

Access storage callback function.

Implements evmc::HostInterface.

Definition at line 598 of file evmc.hpp.

599  {
600  return host->access_storage(context, &address, &key);
601  }
evmc_access_storage_fn access_storage
Access storage callback function.
Definition: evmc.h:760

◆ account_exists()

bool evmc::HostContext::account_exists ( const address addr) const
inlinefinalvirtualnoexcept

Check account existence callback function.

Implements evmc::HostInterface.

Definition at line 516 of file evmc.hpp.

517  {
518  return host->account_exists(context, &address);
519  }
evmc_account_exists_fn account_exists
Check account existence callback function.
Definition: evmc.h:721

◆ call()

result evmc::HostContext::call ( const evmc_message msg)
inlinefinalvirtualnoexcept

Call callback function.

Implements evmc::HostInterface.

Definition at line 561 of file evmc.hpp.

562  {
563  return result{host->call(context, &message)};
564  }
The EVM code execution result.
Definition: evmc.hpp:366
evmc_call_fn call
Call callback function.
Definition: evmc.h:745

◆ copy_code()

size_t evmc::HostContext::copy_code ( const address addr,
size_t  code_offset,
uint8_t *  buffer_data,
size_t  buffer_size 
) const
inlinefinalvirtualnoexcept

Copy code callback function.

Implements evmc::HostInterface.

Definition at line 548 of file evmc.hpp.

552  {
553  return host->copy_code(context, &address, code_offset, buffer_data, buffer_size);
554  }
evmc_copy_code_fn copy_code
Copy code callback function.
Definition: evmc.h:739

◆ emit_log()

void evmc::HostContext::emit_log ( const address addr,
const uint8_t *  data,
size_t  data_size,
const bytes32  topics[],
size_t  num_topics 
)
inlinefinalvirtualnoexcept

Emit log callback function.

Implements evmc::HostInterface.

Definition at line 584 of file evmc.hpp.

589  {
590  host->emit_log(context, &addr, data, data_size, topics, topics_count);
591  }
evmc_emit_log_fn emit_log
Emit log callback function.
Definition: evmc.h:754

◆ get_balance()

uint256be evmc::HostContext::get_balance ( const address addr) const
inlinefinalvirtualnoexcept

Get balance callback function.

Implements evmc::HostInterface.

Definition at line 533 of file evmc.hpp.

534  {
535  return host->get_balance(context, &address);
536  }
evmc_get_balance_fn get_balance
Get balance callback function.
Definition: evmc.h:730

◆ get_block_hash()

bytes32 evmc::HostContext::get_block_hash ( int64_t  block_number) const
inlinefinalvirtualnoexcept

Get block hash callback function.

Implements evmc::HostInterface.

Definition at line 579 of file evmc.hpp.

580  {
581  return host->get_block_hash(context, number);
582  }
evmc_get_block_hash_fn get_block_hash
Get block hash callback function.
Definition: evmc.h:751

◆ get_code_hash()

bytes32 evmc::HostContext::get_code_hash ( const address addr) const
inlinefinalvirtualnoexcept

Get code hash callback function.

Implements evmc::HostInterface.

Definition at line 543 of file evmc.hpp.

544  {
545  return host->get_code_hash(context, &address);
546  }
evmc_get_code_hash_fn get_code_hash
Get code hash callback function.
Definition: evmc.h:736

◆ get_code_size()

size_t evmc::HostContext::get_code_size ( const address addr) const
inlinefinalvirtualnoexcept

Get code size callback function.

Implements evmc::HostInterface.

Definition at line 538 of file evmc.hpp.

539  {
540  return host->get_code_size(context, &address);
541  }
evmc_get_code_size_fn get_code_size
Get code size callback function.
Definition: evmc.h:733

◆ get_storage()

bytes32 evmc::HostContext::get_storage ( const address addr,
const bytes32 key 
) const
inlinefinalvirtualnoexcept

Get storage callback function.

Implements evmc::HostInterface.

Definition at line 521 of file evmc.hpp.

522  {
523  return host->get_storage(context, &address, &key);
524  }
evmc_get_storage_fn get_storage
Get storage callback function.
Definition: evmc.h:724

◆ get_tx_context()

evmc_tx_context evmc::HostContext::get_tx_context ( ) const
inlinefinalvirtualnoexcept

Get transaction context callback function.

The implementation caches the received transaction context by assuming that the block timestamp should never be zero.

Returns
The cached transaction context.

Implements evmc::HostInterface.

Definition at line 572 of file evmc.hpp.

573  {
574  if (tx_context.block_timestamp == 0)
575  tx_context = host->get_tx_context(context);
576  return tx_context;
577  }
evmc_get_tx_context_fn get_tx_context
Get transaction context callback function.
Definition: evmc.h:748
int64_t block_timestamp
The block timestamp.
Definition: evmc.h:200

◆ selfdestruct()

void evmc::HostContext::selfdestruct ( const address addr,
const address beneficiary 
)
inlinefinalvirtualnoexcept

Selfdestruct callback function.

Implements evmc::HostInterface.

Definition at line 556 of file evmc.hpp.

557  {
558  host->selfdestruct(context, &addr, &beneficiary);
559  }
evmc_selfdestruct_fn selfdestruct
Selfdestruct callback function.
Definition: evmc.h:742

◆ set_storage()

evmc_storage_status evmc::HostContext::set_storage ( const address addr,
const bytes32 key,
const bytes32 value 
)
inlinefinalvirtualnoexcept

Set storage callback function.

Implements evmc::HostInterface.

Definition at line 526 of file evmc.hpp.

529  {
530  return host->set_storage(context, &address, &key, &value);
531  }
evmc_set_storage_fn set_storage
Set storage callback function.
Definition: evmc.h:727

The documentation for this class was generated from the following file: