EVM Toolkit (ETK)

The EVM Toolkit (or ETK) is a collection of tools for creating and analyzing smart contract programs on the Ethereum Virtual Machine. So far it consists of an assembler (eas) and a disassembler (disease).

ETK is new, and highly experimental. Use at your own risk.

Tools

Assembler: eas

The assembler lives in the etk-asm crate, and provides a command-line interface (eas) and a Rust library. The assembler has a couple notable features:

  • Importing multiple files into the same scope, for organization.
  • Including files in a separate scope, for constructors and initialization code.
  • Automatic push size selection.
  • Solidity-style function selectors.

Disassembler: disease

The disassembler lives in the etk-dasm crate, and also provides a command-line interface (disease) and a Rust library. The disassembler is much more experimental, and has a limited set of features:

  • Disassemble hex or binary encoded instructions into their mnemonics.
  • Identify basic blocks.

API Documentation

Alongside this book, you can also read the API docs generated by Rustdoc if you would like to use ETK as a library.

Dependencies

ecfg requires z3 to build Ubuntu Installation Instructions (example):

sudo apt-get update -y
sudo apt-get install -y z3

Check the system logs to confirm that there are no related errors.

License

ETK, all the source code, is released under the Apache License Version 2.0 and under the MIT License.