This is a transaction fuzzer for the Ethereum Protocol, with per-transaction custom mutators, an user interface for seeing live data from the fuzzer and a terminal to in 75D2 eract with it in real time. Huge thanks to Marius van der Wijden for building tx-fuzz, which I used as reference in many parts of this project, as well as to the alloy team, as I leveraged heavily on them to build this.
It is as simple as doing
./rakoon
and the user interface will pop-up. If there is no binary in the root of the project (it should be if I'm not stupid), then run
make build
and it will be there.
The following commands are available in the terminal interface:
-
set global rpc <URL>
- Set the global RPC URL -
set global sk <private_key>
- Set the global private key -
set global seed <number>
- Set the global seed -
set <runner> rpc <URL>
- Set RPC URL for a specific runner -
set <runner> sk <private_key>
- Set private key for a specific runner -
set <runner> seed <number>
- Set seed for a specific runner
Where <runner>
can be one of al
, blob
, eip1559
, eip7702
, legacy
, random
-
reset global all
- Reset all global configuration -
reset global rpc
- Reset global RPC URL -
reset global sk
- Reset global private key -
reset global seed
- Reset global seed -
reset <runner> all
- Reset all configuration for a specific runner -
reset <runner> rpc
- Reset RPC URL for a specific runner -
reset <runner> sk
- Reset private key for a specific runner -
reset <runner> seed
- Reset seed for a specific runner
start
- Start all runnersstart <runner>
- Start a specific runnerstop
- Stop all runnersstop <runner>
- Stop a specific runner
exit
- Exit the application
- Crash in anvil
$\Rightarrow$ link