Skip to content
EVM interpreter compatible with the evm2wasm interface
Branch: master
Clone or download
axic Merge pull request #33 from axic/chisel
Change chisel to use snip instead of repack
Latest commit 93078e2 Jul 26, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.cargo Add cargo config an make wasm32 default Apr 1, 2019
parity-ethereum @ 3b9b1a8
src Use Rust 2018 edition (and remove some warnings) Jul 25, 2019
.gitignore Initial code skeleten Aug 11, 2018
.gitmodules Import parity-ethereum as a submodule (0cfc6bf2) Aug 11, 2018
Cargo.toml Merge pull request #34 from axic/edition-2018 Jul 25, 2019
LICENSE Genesis Aug 11, 2018 Add chisel configuration Apr 1, 2019
chisel.yml Change chisel to use snip instead of repack Jul 25, 2019
circle.yml Do not use rustfmt-preview, but rustfmt stable Jun 6, 2019


EVM interpreter compatible with the evm2wasm interface.

This is a drop in replacement for evm2wasm.

It uses the EVM interpreter from parity-ethereum.

Technical detail

At runtime the client would call the evm2wasm contract and pass EVM bytecode as an input. To that the contract would respond with an ewasm bytecode, which can be executed on its own.

Instead of that, runevm just returns itself, because during execution time of the translated contract, the codecopy operation still accesses the original EVM bytecode and as a result it is possible to acquire the code to be run.

Runevm runs as as interpreter off the code acquired via codecopy and behaves just like a regular contract.

To achieve this, it consists of two parts:

  • deployer
  • interpreter

The deployer is a tiny wasm wrapper, which only returns the interpreter.



$ cargo build --release
$ chisel run

The resulting binary will be at target/runevm.wasm.

It expects chisel is installed:

$ cargo install chisel


Alex Beregszaszi


Apache 2.0

You can’t perform that action at this time.