-
Notifications
You must be signed in to change notification settings - Fork 125
Modules
This page outlines the general documentation for all modules in the heimdall-rs toolkit.
These options are shared by nearly all modules on heimdall-rs, and have the same functionality across all modules.
Option | Description |
---|---|
-v , --verbose
|
More verbose output per occurrence |
-q , --quiet
|
Silence output |
-r <RPC_URL> , --rpc-url <RPC_URL>
|
The RPC provider to use when connecting to an RPC node |
-h , --help
|
Show the help message |
-o , --output
|
Set the output directory for generated files, or print to display in the terminal |
-n , --name
|
Customize the name of generated files |
The -v
option can be used to increase the verbosity of heimdall-rs. This can be useful for debugging issues with heimdall-rs. The -v
option can be used multiple times to increase the verbosity of heimdall-rs. Output can be silenced with the -q
flag.
Option | Level |
---|---|
-v |
Info |
-vv |
Debug |
-vvv |
Trace |
-vvvv |
Full |
The -r
option can be used to specify the RPC URL to use when connecting to an RPC node. This RPC URL can theoretically be used on any EVM compatible chain, as long as the data it is fetching is from the same chain.
This option is used for interacting with the RPC node within the module.
The -o
option can be used to specify the output file or directory to use when writing output from heimdall-rs.
This module allows you to display and edit the current configuration of heimdall-rs.
To view the current configuration of heimdall-rs, run heimdall config
.
If you want to edit the configuration of heimdall-rs, run heimdall config <key> <value>
. This will set the key to the value specified, if it's a valid configuration key.
This module allows you to convert raw EVM bytecode to opcodes.
Usage:
$ heimdall disassemble <TARGET> [OPTIONS]
Option | Description |
---|---|
TARGET |
The target to disassemble, either a file, bytecode, contract address, or ENS name |
-d , --decimal-counter
|
Whether to use base-10 for the program counter |
This module allows you to decode raw calldata into readable types, without the need for an ABI.
Usage:
$ heimdall decode <TARGET> [OPTIONS]
Option | Description |
---|---|
TARGET |
The target to decode, either a transaction hash or string of bytes |
-d , --default
|
When prompted, always select the default value |
-o <OPENAI_API_KEY> , --openai-api-key <OPENAI_API_KEY>
|
Your OpenAI API key, used for explaining calldata |
--explain |
Whether to explain the decoded calldata using OpenAI's GPT |
-t , --truncate-calldata
|
Whether to truncate nonstandard sized calldata. May help when decoding nonstandard calldata |
This module converts raw contract bytecode into solidity code and it's corresponding ABI.
Usage:
$ heimdall decompile <TARGET> [OPTIONS]
Note: You can also use the cloud based heimdall-rs decompiler here
Option | Description |
---|---|
TARGET |
The target to decode, either a transaction hash or string of bytes |
-d , --default
|
When prompted, always select the default value |
--skip-resolving |
Whether to skip resolving function selectors |
--include-sol |
Whether to include decompiled solidity code in the output |
--include-yul |
Whether to include decompiled yul code in the output |
This module generates a visual control flow graph for EVM bytecode.
Usage:
$ heimdall cfg <TARGET> [OPTIONS]
Option | Description |
---|---|
TARGET |
The target to decode, either a transaction hash or string of bytes |
-c , --color-edges
|
Color the edges of the graph based on the JUMPI condition. |
-f , --format
|
An optional format to convert the output to. Must be supported by graphviz. |
This module will dump all storage slots and values within an EVM smart contract.
Usage:
$ heimdall dump <TARGET> [OPTIONS]
Option | Description |
---|---|
TARGET |
The target to find and dump the storage slots of |
--threads <THREAD_COUNT> |
The number of threads to use when fetching storage values |
--from-block <FROM_BLOCK> |
The block number to start dumping from |
--to-block <TO_BLOCK> |
The block number to stop dumping at |
Detailed inspection of Ethereum transactions, including calldata & trace decoding, log visualization, and more
Usage:
$ heimdall inspect <TARGET> [OPTIONS]
Option | Description |
---|---|
TARGET |
The transaction hash to inspect |
-d , --default
|
When prompted, always select the default value |
-t <API_KEY> , --transpose-api-key <API_KEY>
|
Your Transpose.io API Key, required for fetching contract labels (OPTIONAL). You can obtain a free one here |