Skip to main content

Use the EVM tool

The Besu EVM tool is a CLI program that executes arbitrary EVM programs and Ethereum State Tests outside the context of an operating node. Use the EVM tool for benchmarking and fuzz testing.

Get the EVM tool

The EVM tool is part of the standard Besu binary distribution.

Build from source

To build from source, run the following from the root of the Besu repository:

./gradlew :ethereum:evmTool:installDist

An extractable archive files is created in ethereum/evmtool/build/distributions and an executable installation in ethereum/evmtool/build/install/evmtool.

Execute the EVM tool:

ethereum/evmtool/build/install/evmtool/bin/evmtool <evmtool options>

Execute with Docker

To run the Besu EVM tool in a container:

docker run -rm <docker options> hyperledger/besu-evmtool:develop <evmtool options>
  • Because no data is stored in local directories we recommended using the -rm docker option. The -rm option deletes the container at the end of execution.
  • If you use an option that requires input from standard in, use the -i docker option. The -i option pipes standard input to the EVM tool.
  • If you need to reference files we recommend using a docker file binding, such as -v ${PWD}:/opt/data, which maps the current directory to the /opt/data directory in the container.

The latest tag is the latest released version of Besu. The develop tag is the current main branch code that will go into a future release version of Besu.

EVM tool options

The first mode of the EVM tool runs arbitrary EVM bytecode. Use command line options to specify the code and other contextual information. For example:

evmtool --code=5B600080808060045AFA50600056

The EVM tool also has subcommands used for testing code bases. These subcommands are not meant for typical user interactions.