{"id":13421628,"url":"https://github.com/ipsilon/evmone","last_synced_at":"2026-01-12T07:49:38.988Z","repository":{"id":37612117,"uuid":"160548111","full_name":"ipsilon/evmone","owner":"ipsilon","description":"Fast Ethereum Virtual Machine implementation","archived":false,"fork":false,"pushed_at":"2025-07-03T15:51:53.000Z","size":6793,"stargazers_count":928,"open_issues_count":129,"forks_count":327,"subscribers_count":32,"default_branch":"master","last_synced_at":"2025-07-03T22:54:48.063Z","etag":null,"topics":["blockchain","ethereum","ethereum-virtual-machine","evm","evmc","hacktoberfest"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ipsilon.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-12-05T16:37:26.000Z","updated_at":"2025-07-02T11:55:53.000Z","dependencies_parsed_at":"2022-07-11T22:46:17.104Z","dependency_job_id":"6a8d3e61-3a46-41f1-9511-19089c8b53bf","html_url":"https://github.com/ipsilon/evmone","commit_stats":{"total_commits":1756,"total_committers":22,"mean_commits":79.81818181818181,"dds":"0.23462414578587698","last_synced_commit":"81c9ddaffddabbffc402f261656b6e8756736001"},"previous_names":["ipsilon/evmone","ethereum/evmone"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/ipsilon/evmone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipsilon%2Fevmone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipsilon%2Fevmone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipsilon%2Fevmone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipsilon%2Fevmone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipsilon","download_url":"https://codeload.github.com/ipsilon/evmone/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipsilon%2Fevmone/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264995749,"owners_count":23695030,"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":["blockchain","ethereum","ethereum-virtual-machine","evm","evmc","hacktoberfest"],"created_at":"2024-07-30T23:00:27.299Z","updated_at":"2026-01-12T07:49:38.981Z","avatar_url":"https://github.com/ipsilon.png","language":"C++","funding_links":[],"categories":["Software Development","C++","EVM","Smart Contract Platforms"],"sub_categories":["VMs","Cairo"],"readme":"# evmone\n\n[![ethereum badge]][ethereum]\n[![readme style standard badge]][standard readme]\n[![codecov badge]][codecov]\n[![circleci badge]][circleci]\n[![appveyor badge]][appveyor]\n[![license badge]][Apache License, Version 2.0]\n\n\u003e Fast Ethereum Virtual Machine implementation\n\n_evmone_ is a C++ implementation of the Ethereum Virtual Machine (EVM). \nCreated by members of the [Ipsilon] (ex-[Ewasm]) team, the project aims for clean, standalone EVM implementation \nthat can be imported as an execution module by Ethereum Client projects. \nThe codebase of _evmone_ is optimized to provide fast and efficient execution of EVM smart contracts.\n\n### Characteristic of evmone\n\n1. Exposes the [EVMC] API.\n2. Requires C++20 standard.\n3. The [intx] library is used to provide 256-bit integer precision.\n4. The [ethash] library is used to provide Keccak hash function implementation\n   needed for the special `KECCAK256` instruction.\n5. Contains two interpreters: \n   - **Baseline** (default)\n   - **Advanced** (select with the `advanced` option)\n\n### Baseline Interpreter\n\n1. Provides relatively straight-forward but efficient EVM implementation.\n2. Performs only minimalistic `JUMPDEST` analysis.\n\n### Advanced Interpreter\n\n1. The _indirect call threading_ is the dispatch method used -\n   a loaded EVM program is a table with pointers to functions implementing virtual instructions.\n2. The gas cost and stack requirements of block of instructions is precomputed \n   and applied once per block during execution.\n3. Performs extensive and expensive bytecode analysis before execution.\n\n\n## Usage\n\n### As geth plugin\n\nevmone implements the [EVMC] API for Ethereum Virtual Machines.\nIt can be used as a plugin replacing geth's internal EVM. But for that a modified\nversion of geth is needed. The [Ewasm]'s fork\nof go-ethereum provides [binary releases of geth with EVMC support](https://github.com/ewasm/go-ethereum/releases).\n\nNext, download evmone from [Releases].\n\nStart the downloaded geth with `--vm.evm` option pointing to the evmone shared library.\n\n```bash\ngeth --vm.evm=./libevmone.so\n```\n\n### Building from source\n\nTo build the evmone EVMC module (shared library), test, and benchmark:\n\n1. Fetch the source code:\n   ```\n   git clone --recursive https://github.com/ethereum/evmone\n   cd evmone\n   ```\n\n2. Configure the project build and dependencies:\n   ##### Linux / OSX\n   ```\n   cmake -S . -B build -DEVMONE_TESTING=ON\n   ```\n\n   ##### Windows\n   ```\n   cmake -S . -B build -DEVMONE_TESTING=ON -G \"Visual Studio 16 2019\" -A x64\n   ```\n   \n3. Build:\n   ```\n   cmake --build build --parallel\n   ```\n\n\n3. Run the unit tests or benchmarking tool:\n   ```\n   build/bin/evmone-unittests\n   build/bin/evmone-bench test/evm-benchmarks/benchmarks\n   ```\n\n### Precompiles\n\nEthereum Precompiled Contracts (_precompiles_ for short) are supported by evmone with some exceptions:\n\n1. The `ecrecover` is implemented directly by evmone and has degraded performance.\n2. For `expmod` stubs are enabled by default — they will correctly respond to known inputs. The CMake option `EVMONE_PRECOMPILES_GMP=1` enables full implementation but this requires [GMP] (e.g. libgmp-dev) library at build and execution time.\n\n### Tools\n\n#### evm-test\n\nThe **evm-test** executes a collection of unit tests on \nany EVMC-compatible Ethereum Virtual Machine implementation.\nThe collection of tests comes from the evmone project.\n\n```bash\nevm-test ./evmone.so\n```\n\n### Docker\n\nDocker images with evmone are available on Docker Hub:\nhttps://hub.docker.com/r/ethereum/evmone.\n\nHaving the evmone shared library inside a docker is not very useful on its own,\nbut the image can be used as the base of another one or you can run benchmarks \nwith it.\n\n```bash\ndocker run --entrypoint evmone-bench ethereum/evmone /src/test/benchmarks\n```\n\n## References\n\n1. [Efficient gas calculation algorithm for EVM](docs/efficient_gas_calculation_algorithm.md)\n\n## Maintainer\n\nPaweł Bylica [@chfast]\n\n## License\n\n[![license badge]][Apache License, Version 2.0]\n\nLicensed under the [Apache License, Version 2.0].\n\n\n[@chfast]: https://github.com/chfast\n[appveyor]: https://ci.appveyor.com/project/chfast/evmone/branch/master\n[circleci]: https://circleci.com/gh/ethereum/evmone/tree/master\n[codecov]: https://codecov.io/gh/ethereum/evmone/\n[Apache License, Version 2.0]: LICENSE\n[ethereum]: https://ethereum.org\n[EVMC]: https://github.com/ethereum/evmc\n[Ipsilon]: https://github.com/ipsilon\n[Ewasm]: https://github.com/ewasm\n[GMP]: https://gmplib.org\n[intx]: https://github.com/chfast/intx\n[ethash]: https://github.com/chfast/ethash\n[Releases]: https://github.com/ethereum/evmone/releases\n[standard readme]: https://github.com/RichardLitt/standard-readme\n[silkpre]: https://github.com/torquem-ch/silkpre\n\n[appveyor badge]: https://img.shields.io/appveyor/ci/chfast/evmone/master.svg?logo=appveyor\n[circleci badge]: https://img.shields.io/circleci/project/github/ethereum/evmone/master.svg?logo=circleci\n[codecov badge]: https://img.shields.io/codecov/c/github/ethereum/evmone.svg?logo=codecov\n[ethereum badge]: https://img.shields.io/badge/ethereum-EVM-informational.svg?logo=ethereum\n[license badge]: https://img.shields.io/github/license/ethereum/evmone.svg?logo=apache\n[readme style standard badge]: https://img.shields.io/badge/readme%20style-standard-brightgreen.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipsilon%2Fevmone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fipsilon%2Fevmone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipsilon%2Fevmone/lists"}