EVMC – Ethereum Client-VM Connector API
APACHE-2.0 License
Bot releases are visible (Hide)
Published by chfast 11 months ago
Published by chfast about 1 year ago
evmc_add_vm_test()
not working in cross-compilation #695
Published by chfast over 1 year ago
Published by chfast about 2 years ago
PUSH0
instruction from EIP-3855 for Shanghai revision. #628
evmc_result
. #666
EVMC_LOADER_UNSPECIFIED_ERROR
has been defined to provide a convenient way of initializing evmc_loader_error_code
objects. #617
evmc::address
and evmc::bytes32
are convertible to std::basic_string_view<uint8_t>
. #636
evmc::result
. #660
EvmcVm::set_option
has been added. #614
code_address
field has been added to the evmc_message
type. It represents the address of an account from which the code is being executed and is useful for DELEGATECALL
implementations. #611 #615
evmc_message::destination
field has been renamed to evmc_message::recipient
to clarify its purpose and match the naming from the Yellow Paper. #616
evmc_storage_status
has been extended to provide information about every possible case of storage net gas metering (EIP-2200). #661
selfdestruct
method returns the information if the given address has not been registered as selfdestructed yet. #662
evmc::result
has been renamed to evmc::Result
for consistency with C++ types of similar kind. #665
HostContext
does not cache transaction context (evmc_tx_context
) anymore. #631
create2Salt
parameter has been removed from the VM.Execute()
. #612
block_difficulty
field was renamed to block_prev_randao
, and DIFFICULTY
opcode to PREVRANDAO
. #635
evmc::hex
support C++ library has been refactored and converted to a single-header library. #643 #648 #649 #654
@file
syntax must be used. E.g. evmc run @contract.evm --input @data.in
. #647
evmc::MockedHost
testing utility around account storage and selfdestructs. #661 #662 #670
0_address
and 0_bytes32
literals has been removed. #652
Published by chfast over 3 years ago
block_base_fee
member added to evmc_tx_context
, BASEFEE
instruction added. #603
EVMC_LATEST_STABLE_REVISON
: alias for the latest known EVM revision with finalized specification. #605
--bench
flag has been added to evmc run
to more precisely measure execution time. #598
to_string()
overloads for EVMC types evmc_revision
and evmc_status_code
are now part of public C and C++ API. #599
evmc::mocked_host
: storage changes to non-existent keys are now preserved. #594
Published by chfast over 3 years ago
Published by chfast over 3 years ago
--input
for evmc run
tool to specify execution input data (calldata). #564
--create
for evmc run
tool to create new contract with provided init code before main execution. This allows using Solidity compiler binary outputs directly by the tool. #566
solc --bin Contract.sol -o .
evmc run --create Contract.bin --input 370158ea
evmc run
tool accepts both hex-strings or file paths for code
and --input
arguments. #574
evmc::hex
added with procedures for hex encoding/decoding. Hex-strings are used by EVMC and related projects for internal testing. #575
EVMC_INSUFFICIENT_BALANCE
error code has been registered. #528
std::hash
and comparison operators for EVMC types has been optimized. #560 #561
evmc --version
now also informs about the version of the loaded EVM. #567
evmc::example-vm
) has been converted from C to C++. It now implements a subset of real EVM opcodes so examples and tests can use valid EVM bytecodes. #539
Published by chfast over 4 years ago
address
and bytes32
types have been reimplemented to use static_assert
to report errors. This makes C++ bindings exception-free (no-throw guarantee level of exception safety). #520
Published by chfast over 4 years ago
Published by chfast over 4 years ago
evmc run --help
for more information.address
and bytes32
have all the comparison operators supported. #474
uint64_t
added for basic types address
and bytes32
. #488
VM::get_raw_pointer()
method to directly access VM C API when needed. #492
operator<
for evmc::address
and evmc::bytes32
has been fixed. #498
Published by chfast almost 5 years ago
MockedHost
C++ class (in form of header-only evmc::mocked_host
library) which can be used to emulate Host behavior when testing VM implementations. #456
MessageKind
, MessageFlags
, StatusCode
, StorageStatus
, Revision
). #206
evmc::evmc_cpp
target has been added which represents the C++ EVMC API. #470
Published by chfast almost 5 years ago
This version of EVMC delivers compatibility with Istanbul EVM revision. The ABI breaking change has been required in this case so some other backward-incompatible changes are also included and deprecated APIs have been removed.
chain_id
added to evmc_tx_context
struct. #375
VM::execute()
has been added that omits the Host context and interface parameters. This is useful for Precompiles VMs that do not interact with the Host. #302
evmc_instance
renamed to evmc_vm
. #430
evmc_context
renamed to evmc_host_context
. #426
evmc_host_interface
is now separated from evmc_host_context
. This simplifies language bindings which implement the evmc_host_interface
. #427
evmc::vm
renamed to evmc::VM
in C++ API. #252
helpers.hpp
header file has been removed. #410
EVMC_CONSTANTINOPLE2
and EVMC_LATEST_REVISION
revisions have been removed. #411
evmc::instructions
library the undefined instructions have 0
gas cost instead of previous -1
value.evmc_is_abi_compatible()
returns now bool
instead of int
. #442
ExecutionContext
optional within execute
. #350
Published by chfast about 5 years ago
Published by chfast about 5 years ago
vm::get_capabilities()
method has been added in C++ API. [#301]./modules/vm.so,engine=compiler,trace,verbosity=2
. A VM can be loaded, created and configured atomically with new evmc_load_and_configure()
function. [#313]evmc::vm
objects in C++ API. [#341]address
and bytes32
have received their C++ wrappers to assure they are always initialized. They also have convenient overloaded operators for comparison and usage as keys in standard containers. [#357]address
and bytes32
have user defined literals. [#359]
auto a = 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359_address;
auto b = 0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3_bytes32;
EVMC_INSTALL
(ON
by default) to disable installing EVMC targets. This may be useful when EVMC is included in other project as git submodule or subtree. [#360]evmc-vmtester
tool received support for EVMC module configuration. E.g. evmc-vmtester ./my_vm,mode=interpreter
. [#366]evmc-vm
Rust crate, ExecutionResult
now has success
, failure
and revert
helpers. [#297, #368]evmc-declare
Rust crate with a procedural macro for easy VM declaration. [#262, #316]ExecutionMessage
wrapper in the evmc-vm
Rust crate. [#324]evmc-vm
Rust crate. [#342, #343]evmc::result::raw()
renamed to evmc::result::release_raw()
. [#293]evmc_load_and_create()
the error_code
is optional (can be NULL
). [#311]evmc/helpers.hpp
has been deprecated. Use evmc/evmc.hpp
which provides the same features. [#358]Published by chfast over 5 years ago
Published by chfast over 5 years ago
Published by chfast over 5 years ago
EVMC_TEST_TOOLS
to build evmc-vmtester without bothering with internal unit tests.evmc_last_error_msg()
function.TxContext
struct.EVMC_CONSTANTINOPLE2
revision name is deprecated, replaced with EVMC_PETERSBURG
.Published by chfast over 5 years ago
Published by axic over 5 years ago
is_zero()
C++ helper for basic data types.EVMC_LATEST_REVISION
is deprecated, replaced with EVMC_MAX_REVISION
.