{"id":27874786,"url":"https://github.com/camerodev/evmautomation","last_synced_at":"2026-05-11T15:09:44.769Z","repository":{"id":231525120,"uuid":"772770857","full_name":"camerodev/evmautomation","owner":"camerodev","description":"a command line tool performing automated tasks on smart contracts based on EVM chains","archived":false,"fork":false,"pushed_at":"2024-03-15T21:36:35.000Z","size":27,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T16:43:26.879Z","etag":null,"topics":["defi","evm","python","web3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/camerodev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-15T21:36:31.000Z","updated_at":"2024-03-29T17:35:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"5a5e071d-d762-46f4-8533-7d45fdc4c05c","html_url":"https://github.com/camerodev/evmautomation","commit_stats":null,"previous_names":["slickcharmer/evmautomation","camerodev/evmautomation"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camerodev%2Fevmautomation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camerodev%2Fevmautomation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camerodev%2Fevmautomation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/camerodev%2Fevmautomation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/camerodev","download_url":"https://codeload.github.com/camerodev/evmautomation/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252424946,"owners_count":21745835,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["defi","evm","python","web3"],"created_at":"2025-05-05T01:38:20.716Z","updated_at":"2026-05-11T15:09:39.734Z","avatar_url":"https://github.com/camerodev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🦾 EVMAutomation 🦾 - a command line tool performing automated tasks on smart contracts\r\n\r\nIn DeFi there is constant pressure to perform different tasks, like compound, hydrate, roll, etc.\r\n\r\nThis tool was written to enable automation of those tasks to ensure you don't have to do it manually ;-)\r\n\r\nIt was build to support EVM based blockchains but works currently with 3 contracts on the Binance Smart chain.\r\n\r\nAs it is build in a modular way, one can expand it quite easily to other projects or even other EVM-based chains.\r\n\r\nCurrently supported projects are\r\n\r\n- DRIP (Faucet Hydration)\r\n- DRIP Garden (Seed Planting)\r\n- TRUNK (Rolling Stampede Bonds)\r\n\r\n## 🔒 Disclaimer on Security and Encryption\r\n\r\nThis code was specifically written to be as secure as possible, since signing transactions requires the use of a wallet's private key. It's imparative you use the encryption outlined in the code to best protect yourself in the event your computer is ever compomised. \r\n\r\nFor every contract you will need to save 1-n wallets via the build in encryption function. \r\n\r\nThe workflow is simple:\r\n1. create a wallet.csv file with wallet_address;private_key - one per line\r\n2. use the build in encryption to encrypt the wallet with an encryption key\r\n3. write down or store this encryption key (per project)\r\n4. IMPORTANT: delete the source.csv file\r\n\r\nThe tool will display an encryption code (AES-128) which is used to encrypt the wallet address and the private key. Every time you start the tool, you will need to enter the encryption key per contract. So currently if you are in DRIP, GARDEN and STAMPEDE you'll need to enter 3 keys which you have previously noted down.\r\n\r\n## ℹ️ Installation\r\n\r\n### Prerequisies\r\n\r\n- Preferrably run this on Linux or MacOS, yes Windows can and probably will work but is not tested\r\n- Install Python 3.8 or 3.9 - refer to Google, there are gazillions of docs for that most *nix systems comes with preinstalled packages\r\n- Install the Package Installer for Python, again most distros come with preinstalled, refer to the [official installation documentation](https://pip.pypa.io/en/stable/installation/)\r\n\r\n### Download code from repository\r\n\r\nThe code is open-source and hostet on `github.com` so you need to checkout the sources:\r\n\r\n```bash\r\n# Download the current code of EMVAutomation\r\ngit clone https://github.com/nightshift2k/evmautomation.git\r\n\r\n# Enter downloaded directory\r\ncd evmautomation\r\n```\r\n### Setup Python virtual environment (virtualenv)\r\n\r\nYou should run evmautomation in a separated `virtual environment` this is optional but highly recommended.\r\n\r\n```bash\r\n# create virtualenv in directory /freqtrade/.env\r\npython3 -m venv .env\r\n\r\n# run virtualenv\r\nsource .env/bin/activate\r\n```\r\n\r\n### Install the package and its dependencies\r\n\r\n```bash\r\npython3 -m pip install --upgrade pip # upgrades pip \r\npython3 -m pip install -e . # installs the package and its dependencies\r\n```\r\n\r\n### Done\r\n\r\nYou can use the tool by entering `evma` on the commandline, the output should look like this:\r\n\r\n```\r\nvscode ➜ /workspaces/evmautomation $ evma\r\nusage: evma [-h] [-c CONFIG] [-r] [-e INFILE OUTFILE]\r\n\r\noptional arguments:\r\n  -h, --help            show this help message and exit\r\n  -c CONFIG, --config CONFIG\r\n                        path to the config file\r\n  -r, --run             Run evm automation workflows configured in config.yaml or custom config file (specify with -c)\r\n  -e INFILE OUTFILE, --encrypt INFILE OUTFILE\r\n                        encrypts infile.csv to outfile.json and displays the encryption key\r\n```\r\n\r\n## ⚙️ Configuration\r\n\r\nThe configuration consists of two steps:\r\n1. encrypt wallets and private keys\r\n2. configure via `config.yaml` or any alternate config file that can be specified via `--config`\r\n\r\n### Encrypting wallets\r\n\r\nThe tool uses the `cryptography.fernet` module and encrypts wallets with an AES-128 key.\r\n\r\nTo encrypt the wallets:\r\n- create a `wallets-projectname.csv`, e.g. `wallets-drip.csv`\r\n- run `evma -e wallets-projectname.csv wallets-projectsname.json`\r\n- store the shown key in a password manager or write it down\r\n- delete `wallets-projectname.csv`\r\n\r\nRemember, when running the automation the tool will ask you for that encryption key again. If you lose it, you'll need to reencrypt the files over again.\r\n\r\nRepeat this for every project (e.g. DRIP, GARDEN, STAMPEDE)\r\n\r\n### create/adjust config.yaml\r\n\r\nThe parameters are all described in the `config.yaml.example`, the simplest way is to copy this file to `config.yaml` and adjust.\r\n\r\n## 🏃 Running\r\n\r\nThe goal is to run the tool in unattended mode and recieve notifications via telegram (if enabled) or periodically checking the log file.\r\n\r\nTo do so without being connected to your linux machine via console or ssh, its advised to use a terminal multiplexer like `screen`.\r\n\r\nA very good explanation how to use screen for such an use case can be found [here](https://linuxize.com/post/how-to-use-linux-screen/)\r\n\r\n## 🐞 Bug / Feature Request\r\n\r\nIf you find a bug, kindly open an issue [here](https://github.com/nightshift2k/evmautomation/issues/new) by including a **logfile** and a **meaningful description** of the problem.\r\n\r\nIf you'd like to request a new function, feel free to do so by opening an issue [here](https://github.com/nightshift2k/evmautomation/issues/new). \r\n\r\n## 💻 Development\r\nWant to contribute? **Great!🥳**\r\n\r\nTo fix a bug or enhance an existing module, follow these steps:\r\n\r\n- Fork the repo\r\n- Create a new branch (`git checkout -b improve-feature`)\r\n- Make the appropriate changes in the files\r\n- Add changes to reflect the changes made\r\n- Commit your changes (`git commit -am 'Improve feature'`)\r\n- Push to the branch (`git push origin improve-feature`)\r\n- Create a Pull Request\r\n\r\n## ⚠️ License\r\n\r\n`evmautomation` is free and open-source software licensed under the [MIT License](https://github.com/nightshift2k/evmautomation/blob/main/LICENSE). \r\n\r\nBy submitting a pull request to this project, you agree to license your contribution under the MIT license to this project.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamerodev%2Fevmautomation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcamerodev%2Fevmautomation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcamerodev%2Fevmautomation/lists"}