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:
- ETCDEVTeam/sputnikvm#337
- ETCDEVTeam/sputnikvm#349
- ETCDEVTeam/sputnikvm#352
- ETCDEVTeam/sputnikvm#360
- ETCDEVTeam/sputnikvm#364
- etclabscore/evm-rs#2
- #22
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
andDynamicPatch
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
rust-secp256k1
feature is enabled by default- Minumum Rust version updated to 1.33.0.
- Rust 2018 edition is enabled by default.
- Code formatting with rustfmt and CI rules to enforce correct formatting.
- Continuous Integration with Jenkins CI.
- General dependencies upgrade.
- Transition back to
ethereumproject
under the nameevm-rs
. - Change of crate names to
evm
andevm-*
for related projects.
Related projects
evm-ffi
received support of theDynamicPatch
API.- Ethereum Classic specific APIs are
deprecated
inevm-ffi
and are going to be removed in the future releases.