EVM-RS v0.11 — A SputnikVM Release

Photo by Martin Reisch on Unsplash

The release of the new version of Sputnik VM, renamed EVM-RS, has been highly anticipated in the Ethereum Classic community. 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.

SputnikVM/EVM-RS is an outstanding library/tool in terms of agility and its ability to be integrated into existing software. Unlike most of Ethereum Virtual Machines, SputnikVM is not a part of any particular ecosystem, it does not depend on a specific storage option, code base or network. — Mike Lubinets, ETC Labs Core Developer

EVM-RS is a standalone implementation of the Ethereum Virtual Machine written in Rust. Being a standalone EVM empowers developers to use the EVM outside of the main network with the fast performance of Rust. It can be integrated into any application and may be interfaced either as a Rust, C or Go library.

The new update sees the inclusion of several opcodes and fixes that bring EVM-RS toward ETC-ETH compatibility. As a standalone application, developers often will use this over an embedded client for the ease and flexibility it offers, and EVM-RS is suitable for multi-chain clients with the addition of the DynamicPatch API. This new update from Mike Lubinets comes after a long delay; the last update being Version 0.10.1, 22 Feb 2018.

Features

  • Universal — supports different Ethereum chains, such as ETC, ETH or private ones
  • Stateless — only an execution environment connected to independent State storage
  • Fast — main focus is on performance
  • IoT compatible — designed to support hardware used in embedded devices
  • Written in Rust, can be used as a binary, cargo crate or shared library

It is standalone, stateless and easily configurable feature-wise, which grants its users the ability to integrate SputnikVM into any existing ethereum-based blockchain client, either as a Rust, C or Go library. — Mike Lubinets, ETC Labs Core Developer

Network support

The addition of CREATE2 is a major event — allowing developers to create smart contract addresses without having to deploy any contracts. This creates a new universe of options for dapp developers, as it enables user flows that don’t require keys.

Changes:

  • The following opcodes are implemented and tested:
  • SHL, SHR, SAR (EIP-145)
  • CREATE2 (EIP-1014)
  • EXTCODEHASH (EIP-1052)
  • SSTORE opcode gas metering adjustments (EIP-1283)
  • Number of new and pre-0.11 interpreter bugs fixed

API

Changes:

  • Breaking changes in the Patch trait and related code

Documentation

Other changes

Related projects

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