Skip to content
This repository has been archived by the owner on Oct 4, 2019. It is now read-only.

EVM-RS 0.11.0

Latest
Compare
Choose a tag to compare
@mersinvald mersinvald released this 07 May 19:52
ef12cb3

What's new?

We’re transitioning SputnikVM naming to EVM-RS because it is a network agnostic EVM implementation built in Rust, and EVM-RS reflects that purpose.

Network support

As of Version 0.11 EVM-RS passes every test in the ETH test suit up to Constantinople hard-fork,
which essentially means that it can be used with the ETH network.

Related Pull Requests:
Changes:
  • Byzantium opcodes implementation is tested and refined
  • The following opcodes are implemented and tested:
  • SSTORE opcode gas metering adjustments (EIP-1283)
  • Number of new and pre-0.11 interpreter bugs fixed

API

EVM-RS API is now more agile then ever: the new DynamicPatch API enables the patch-based configuration
to be performed at runtime, as opposed to static patches that were based on using the static generic types.
This change is particularly useful for multi-chain clients like multi-geth that cooperates with EVM-RS over
an FFI boundary. Now it may configure EVM-RS feature-wise in runtime, and not rely on a pre-defined set of network and fork specific constructors.
All that with keeping overhead as low as possible and completely zero-copy!

Therefore, we recommend switching to evm-network crate as a foundation for Patch-building,
evm-network-* crates are considered deprecated and may not be supported in the future releases.

Related Pull Requests:
Changes:
  • New evm-network with a set of precompiled contracts and re-exports of Patch and DynamicPatch APIs.
  • Breaking changes in the Patch trait and related code

Testing

Testing framework for the JsonTests (VMTests from ETH Test Suite) have been majorly reworked,
now it generates a separate native Rust test for each testcase in the Json files, for debugging and subset runs convenience.

Related Pull Requests:
Changes:
  • use of custom derive macro to generate tests from json files.
  • generate benchmarks using criterion.
  • update the tests from foundation upstream.

Documentation

Other changes

Related projects

  • evm-ffi received support of the DynamicPatch API.
  • Ethereum Classic specific APIs are deprecated in evm-ffi and are going to be removed in the future releases.

View full changelog