goevmlab

module
v0.0.0-...-c150516 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 1, 2025 License: GPL-3.0

README

Go evmlab

This project is inspired by EVMlab, which was written in Python. EVMlab featured a minimal "compiler", along with some tooling to view traces in a UI, and execute scripts against EVMs (parity and geth).

This is a golang rewrite from scratch of that same project, this time in go-lang to be more stable and nice to use.

Status

So far, it only contains

  • a minimal "compiler", which is not a proper compiler, but it can be used to create EVM bytecode and do some basic higher level operations.
  • Some infrastructure for writing EVM-based fuzzers

Examples

See [examples/calltree](the calltree example) to get an idea of how to use this thing, along with an analysis done using this framework.

Utilities

There are a few different utilities in this repo, based on this library.

Tracediff

Tracediff allows you to load evm (jsonl) files and find differences.

tracediff tracediff

Traceview

Traceview allows you to analyse an evm trace file

traceview

Trophy list

Bugs found via the fuzzer or via tests generated using go-evmlab in general

Directories

Path Synopsis
cmd
checkslow command
generic-fuzzer command
minimizer command
mutator command
repro command
runtest command
testvm command
tracediff command
traceview command
Package common contains some shared stuff
Package common contains some shared stuff
Package evms contains various tooling for interacting with different evms.
Package evms contains various tooling for interacting with different evms.
examples
analysisAttack command
callNonexistent command
callPrecompiles command
callbug command
calldata command
calltree command
create2_bug command
delegatecall command
ecRecover command
loopAttack command
selfcall command
tstore_bug command
tstore_bug-2 command
Package fuzzing contains various fuzzers and utilities for generating testcases.
Package fuzzing contains various fuzzers and utilities for generating testcases.
Package ops contain definitions of the ethereum opcodes and forks.
Package ops contain definitions of the ethereum opcodes and forks.
Package program contains utilities to build small evm programs.
Package program contains utilities to build small evm programs.
Package traces contain some helper-utils to visualise/track traces.
Package traces contain some helper-utils to visualise/track traces.
Package ui contains some tools to provide a nice terminal-based user interface
Package ui contains some tools to provide a nice terminal-based user interface
Package utils contain some common goodies.
Package utils contain some common goodies.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL