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.
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.
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
Run solc with the --bin-runtime option on the contract.
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.
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

