OpenViSTAI · Agents · Blockchain · Crypto
Menu
Developer Tools

Ilf

ILF is a Python command-line fuzzer for Ethereum smart contracts. Its imitation-learning policy uses an ensemble of neural networks trained on transaction sequences generated through symbolic execution. ILF generates contract transactions and reports code coverage and a vulnerability report.

Independent OpenViST project profile, based on linked sources.

Ilf — 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 ILF when your contract is represented as a Truffle project and you want transaction-based fuzzing with coverage and vulnerability reporting, or when you want to explore a symbolic-execution-to-imitation-learning training workflow.

Who it is for

  • Ethereum smart-contract developers who want to fuzz contracts using generated transaction sequences.
  • Security and testing teams exploring imitation-learning or symbolic-execution fuzzing workflows.
  • Researchers or developers who want to generate training data and train imitation-fuzzing models.

Documented uses

  • Fuzz a contract using the repository’s pre-trained imitation model.
  • Generate deployment transactions from a Truffle project before fuzzing a new contract.
  • Compare transaction generation using imitation, random, symbolic, sym_plus or mixed policies.
  • Create a symbolic-fuzzing dataset and train an imitation model.
Before you choose

Requirements & limits

The source repository is public and licensed under Apache-2.0. The README recommends Docker and also describes local installation.

  • New contracts require a Truffle project formatted like the repository example and an extraction step for deployment transactions.
  • The included pre-trained model supports the documented Crowdsale example; the README describes separate steps for training a model.
  • Training generally uses tens of thousands of contracts, while the included single-contract dataset is described as a demonstration.
  • The README flags possible build errors on Apple M-series chips and refers to an issue for guidance.
  • ILF offers multiple policies: imitation, random, symbolic, sym_plus and mix.

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

Fuzz a new contract from a Truffle project

Prepare a Truffle project and extract its deployment transactions for ILF fuzzing.

Before you start

  • ILF installed or running in Docker
  • A Truffle project formatted like the repository’s Crowdsale example
  • Port 8545 available for the documented example

Steps

  1. Format the Truffle project to match the repository example.

  2. Stop any ganache-cli process listening on the port you plan to use.

  3. Run script/extract.py with the project path and port; the example uses port 8545.

Expected outcome

The extraction script is used to obtain deployment transactions before fuzzing a new contract.

Guide limitations

  • The README documents extraction as a prerequisite; this guide does not include a subsequent fuzzing command for a new project.
  • The documented example uses port 8545; no other port configuration is described here.
Source-based practical guide

Train an imitation model from a small example dataset

Create an example training dataset, select seed and amount values, and produce trained networks.

Before you start

  • ILF installed or running in Docker
  • The repository’s Crowdsale Truffle example

Steps

  1. Run the symbolic fuzzer on the Crowdsale example to write a dataset to train_data.

  2. Run script/get_int_values.py and script/get_amounts.py with the training directory.

  3. Create the output directory and run ILF in training mode with the training directory and model output path.

Expected outcome

The documented training command outputs trained networks in the new_model directory.

Guide limitations

  • The small Crowdsale dataset is for demonstration; the README says training usually uses tens of thousands of contracts.
  • The guide follows the documented example and does not establish performance or vulnerability-detection results.
Evidence and transparency

Sources & review

Source record details
Source availability
Active
Sources checked
14 October 2026
Original website title
eth-sri/ilf · Official homepage title · retained in its source language