{"id":19846039,"url":"https://github.com/koukyosyumei/rhoevm","last_synced_at":"2025-10-13T05:10:23.352Z","repository":{"id":247772960,"uuid":"825840459","full_name":"Koukyosyumei/rhoevm","owner":"Koukyosyumei","description":"symbolic EVM execution engine written in Rust","archived":false,"fork":false,"pushed_at":"2024-09-05T02:26:37.000Z","size":1816,"stargazers_count":16,"open_issues_count":2,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-09-15T08:42:14.621Z","etag":null,"topics":["evm","formal-methods","rust","security","smart-contracts","symbolic-execution"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Koukyosyumei.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-07-08T15:47:37.000Z","updated_at":"2025-07-25T02:05:12.000Z","dependencies_parsed_at":"2024-08-29T03:32:24.221Z","dependency_job_id":"3dc55efa-af0f-4178-aa04-76c1d2bfd6a4","html_url":"https://github.com/Koukyosyumei/rhoevm","commit_stats":null,"previous_names":["koukyosyumei/revm","koukyosyumei/rhoevm"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Koukyosyumei/rhoevm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Koukyosyumei%2Frhoevm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Koukyosyumei%2Frhoevm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Koukyosyumei%2Frhoevm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Koukyosyumei%2Frhoevm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Koukyosyumei","download_url":"https://codeload.github.com/Koukyosyumei/rhoevm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Koukyosyumei%2Frhoevm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279013696,"owners_count":26085390,"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","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["evm","formal-methods","rust","security","smart-contracts","symbolic-execution"],"created_at":"2024-11-12T13:10:14.829Z","updated_at":"2025-10-13T05:10:23.324Z","avatar_url":"https://github.com/Koukyosyumei.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rhoevm\n\n```\n.----------------------------------------------------------------------------.\n|                     _           _ _        _______     ____  __            |\n| ___ _   _ _ __ ___ | |__   ___ | (_) ___  | ____\\ \\   / /  \\/  |           |\n|/ __| | | | '_ ` _ \\| '_ \\ / _ \\| | |/ __| |  _|  \\ \\ / /| |\\/| |           |\n|\\__ \\ |_| | | | | | | |_) | (_) | | | (__  | |___  \\ V / | |  | |           |\n||___/\\__, |_| |_| |_|_.__/ \\___/|_|_|\\___| |_____|  \\_/  |_|  |_|           |\n|     |___/                _   _                                _            |\n|  _____  _____  ___ _   _| |_(_) ___  _ __     ___ _ __   __ _(_)_ __   ___ |\n| / _ \\ \\/ / _ \\/ __| | | | __| |/ _ \\| '_ \\   / _ \\ '_ \\ / _` | | '_ \\ / _ \\|\n||  __/\u003e  \u003c  __/ (__| |_| | |_| | (_) | | | | |  __/ | | | (_| | | | | |  __/|\n| \\___/_/\\_\\___|\\___|\\__,_|\\__|_|\\___/|_| |_|  \\___|_| |_|\\__, |_|_| |_|\\___||\n|               _ _   _               _         ____      |___/ _            |\n|__      ___ __(_) |_| |_ ___ _ __   (_)_ __   |  _ \\ _   _ ___| |_          |\n|\\ \\ /\\ / / '__| | __| __/ _ \\ '_ \\  | | '_ \\  | |_) | | | / __| __|         |\n| \\ V  V /| |  | | |_| ||  __/ | | | | | | | | |  _ \u003c| |_| \\__ \\ |_          |\n|  \\_/\\_/ |_|  |_|\\__|\\__\\___|_| |_| |_|_| |_| |_| \\_\\\\__,_|___/\\__|         |\n'----------------------------------------------------------------------------'         \n```\n\n`rhoevm` is a symbolic EVM execution engine written in Rust. It is inspired by [`hevm`](https://github.com/ethereum/hevm), which is implemented in Haskell. This project aims to provide a robust tool for analyzing Ethereum smart contracts by symbolically executing the EVM bytecode.\n\n\n\u003e [!NOTE]\n\u003e This project is currently under active development. Some features may be incomplete or subject to change.\n\n## 1. Install\n\n### 1.1 Prerequisites\n\nBefore building and running rhoevm, ensure you have the following installed:\n\n- Rust: Download and install from [rust-lang.org](https://www.rust-lang.org/).\n- Cargo: Comes with Rust as its package manager.\n- Z3 Solver: Required for constraint solving. Download from the [Z3 GitHub repository](https://github.com/Z3Prover/z3).\n\n### 1.2 Building from Source\n\nClone the repository and build the project using Cargo:\n\n```bash\ngit clone https://github.com/Koukyosyumei/rhoevm.git\ncd rhoevm\ncargo build --release\n\n# Optionally, copy the binary to a directory in your PATH\n# sudo cp ./target/release/rhoevm /usr/local/bin/rhoevm\n```\n\n### 1.3 Running Tests\n\nAfter building, you can run the tests to verify that everything is working correctly:\n\n```bash\ncargo test\n```\n\n## 2. Usage\n\n### 2.1 Command-Line Interface\n\n`rhoevm` provides a command-line interface for executing smart contract bytecode symbolically. The basic usage is as follows:\n\n```bash\nrhoevm \u003cBINARY_FILE_PATH\u003e \u003cFUNCTION_SIGNATURES\u003e [options]\n```\n\n- Options\n\n```\n`-i, --max_num_iterations MAX_NUM_ITER`: Set the maximum number of iterations for loops.\n`-v, --verbose LEVEL`: Set the verbosity level (0: error, 1: warn, 2: info, 3: debug, 4: trace).\n`-h, --help`: Display help information.\n```\n\n### 2.2 Example\n\nBelow is an example of how to use `rhoevm` with a simple Solidity smart contract.\n\n- Example Solidity Contract\n\n```javascript\n// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ncontract SimpleContract {\n    function check(uint32 x, uint32 y) public pure {\n        assert(x + y != 142);\n    }\n}\n```\n\n- Symbolic Execution with `rhoevm`\n\n```bash\n# Compile the Solidity contract using solc or any preferred compiler.\n# Assuming the compiled binary is located in ./example/build\n\n$ rhoevm ./example/build/SimpleContract.bin \"check(uint32,uint32)\"\n```\n\n- Output\n\n```bash\n   ╭───────────────╮\n   │  R H O  │\n   │  E V M  │\n   ╰───────────────╯\n  ╱🦀╱╱╱╲╱╲╱╲\n ╱ 🦀╲╲╲╲╲╲  ╲\n╱   🦀╲╲╲╲╲╲  ╲ symbolic EVM\n╲    ╱🦀╱╱╱╱  ╱ execution engine\n ╲  ╱🦀╱╱╱╱╱ ╱  written in Rust\n  ╲╱🦀╱╱╱╱╱╲╱\n   ╲🦀╲╲╲╲╲╱\n    ╲🦀╲╲╲╱\n     ╲🦀╲\n      ╲🦀\n       ╲\n[2024-08-12T22:37:29Z WARN  rhoevm] Currently, this project is a work in progress.\n[2024-08-12T22:37:29Z INFO  rhoevm] Loading binary from file: ./example/build/SimpleContract.bin\n[2024-08-12T22:37:29Z INFO  rhoevm] Target function signature: check(uint32,uint32)\n[2024-08-12T22:37:29Z INFO  rhoevm] Calldata constructed successfully for function 'check(uint32,uint32)'\n[2024-08-12T22:37:29Z INFO  rhoevm] Number of initial environments: 1\n[2024-08-12T22:37:29Z INFO  rhoevm] Starting EVM symbolic execution...\n[2024-08-12T22:37:30Z ERROR rhoevm] REACHABLE REVERT DETECTED @ PC=0x1db\n[2024-08-12T22:37:30Z ERROR rhoevm] model: check(arg2=0x63,arg1=0x2b)\n[2024-08-12T22:37:30Z INFO  rhoevm] Execution of 'check(uint32,uint32)' completed.\n```\n\nIn the above example, `rhoevm` analyzes the `check` function of the SimpleAssert contract, highlighting a revert condition due to the failed assertion.\n\nYou can find more examples in [example](example).\n\n## 3. License\n\nThis project is licensed under the AGPL-3.0 license. See the [LICENSE](LICENSE) file for details.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoukyosyumei%2Frhoevm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkoukyosyumei%2Frhoevm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoukyosyumei%2Frhoevm/lists"}