OpenViSTAI · Agents · Blockchain · Crypto
Menu
Developer Tools

Rattle

Rattle is a Python command-line framework for static analysis of deployed EVM smart-contract bytecode. It reconstructs control flow, converts stack-based instructions into an optimized SSA-style register representation, and recovers functions, arguments, memory locations and storage locations for inspection.

Independent OpenViST project profile, based on linked sources.

Rattle — OpenViST project profile in Developer Tools.
OpenViST project illustration. See the linked sources for product details.
Understand the project

Practical overview

When it fits

Use Rattle when you have deployed EVM runtime bytecode and want a structured representation to inspect its control flow and recovered functions.

Who it is for

  • Developers inspecting deployed EVM smart contracts.
  • Researchers and investigators examining contract bytecode without relying solely on a readable source representation.

Documented uses

  • Recover a contract’s control-flow graph from runtime bytecode.
  • Transform stack-based EVM instructions into a more readable SSA-style representation.
  • Identify function boundaries, arguments, memory locations and storage locations.
Before you choose

Requirements & limits

The project is open source and distributed under the AGPLv3 license.

  • Rattle expects runtime contract hex bytecode; the README describes obtaining it from a Solidity build with solc’s --bin-runtime option.
  • The listed dependencies are Python 3, Graphviz, cbor2 and pyevmasm.
  • The documented setup uses a Python virtual environment for Python dependencies and provides separate Graphviz installation instructions for Linux and macOS.

Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.

Source-based practical guide

Prepare runtime bytecode from a Solidity contract

Create a runtime bytecode file in the format Rattle accepts.

Before you start

  • A Solidity contract that can be compiled with solc.

Steps

  1. Run solc with the --bin-runtime option on the contract.

  2. Strip the compiler output header and write the final line to a .bin file.

Expected outcome

A file containing runtime contract bytecode for use as Rattle input.

Guide limitations

  • This recipe covers preparing the input only; it does not describe running Rattle on the resulting file.
Evidence and transparency

Sources & review

Source record details
Source availability
Active
Sources checked
17 October 2026
Original website title
crytic/rattle · Official homepage title · retained in its source language