Skip to main content

heimdall

preview

Heimdall is an advanced and modular smart-contract toolkit which aims to make dealing with smart contracts on EVM based chains easier.

THIS REPOSITORY IS DEPRECATED AND WILL NOT BE UPDATED OR SUPPORTED AS OF JUN 24, 2022.

YOU CAN FIND THE NEW VERSION HERE https://github.com/Jon-Becker/heimdall-rs/

Installation & Usage

version badge download badge build badge Build

snippet.txt
1pip install eth-heimdall

Heimdall operates off the argparse library, with modules specifying which operation you with to perform.

snippet.txt
1heimdall MODULE [-v] [--default] [-arguments]

Modules & Help

You may find the various modules supported by Heimdall by using the -h option, which opens the help menu by default.

snippet.txt
1Options: 2 -h, --help Show the help message and exit 3 -hh Show advanced help message and exit 4 --version Display version information and exit 5 --update Updates heimdall to the latest release 6 -v, --verbose Toggle verbose output 7 8 Modules: 9 Below is a list of modules currently supported on Heimdall 10 11 # | Name | Description 12 | | 13 0 | Config | Easily modify the configuration on Heimdall 14 1 | Debug | Easily access Heimdall debug information 15 2 | Decompile | Decompile and download the target smart contract 16 17 Parameters: 18 -m MODULE, --module MODULE Operation module, either name or number from list 19 -t TARGET, --target TARGET Target of operation (file, transaction id, 20 or address) 21 -o PATH, --output PATH Path to write output to 22 -c ID, --chain ID Chain ID of target 23 -p URL, --provider URL URL of custom Ethereum provider 24 25 Additional: 26 --open, --edit Attempts to open nano / edit on the operation 27 --redeploy ID Redeploys the contract from -n onto ID 28 --beautify Attempts to beautify the downloaded contract using 29 statistical renaming and spacing 30 --default Always use defaults when prompted for input 31 --flush, --ignore-cache Flushes the cache and rewrites it

Please keep in mind as more modules are released, module numbers may change. It's recommended to use the module name instead.

Module Documentation

Specific module documentation can be found in the /docs folder, or quickly navigate using the links beow.

Module NameDescriptionDocumentation URL
ConfigHeimdall Configuration ModuleDocumentation
DebugHeimdall Debug ModuleDocumentation
DecompileDecompiles EVM bytecode > SolidityDocumentation

Configuration

You may save environment information, such as remote and local providers, to the configuration folder in env/conf.json.

Contributing

If you'd like to contribute to Heimdall or add a module, please open a pull-request with your changes, as well as detailed information on what is changed, added, or improved.

Modules

To add a module, you must add a .py file within the /lib/modules folder. In order for your pull-request to be accepted, your module must begin with a meta object, which is used when displaying what it does to end-users.

Example meta object:

snippet.txt
1meta = { 2 "title": "Decompile", 3 "description": "Decompile and download the target smart contract", 4 "author": "Jonathan Becker <jonathan@jbecker.dev>", 5 "version": "v1.0.0", 6}

You will also need to add detailed documentation to this readme file in the Module Documentation section.

Troubleshooting

If you encounter an issue, please create one using the link below. You MUST follow the issue format, or it will be marked as invalid.

Issues that remain inactive for 72 hours will be marked inactive and closed. If your issue is accepted by a contributor, they will assign themselves to it and add corresponding tags.

Credits

This project is coded in its entirety by Jonathan Becker. Various contributors can be found in the sidebar.