A formal semantics of the Ethereum Virtual Machine (EVM) written in the K framework, enabling verification and symbolic execution of smart contracts.
KEVM is a formal semantics of the Ethereum Virtual Machine (EVM) implemented in the K framework. It provides an executable specification that precisely defines how EVM bytecode executes, enabling both concrete testing and formal verification of smart contracts. It solves the problem of having a rigorous, machine-checkable reference for EVM behavior, which is essential for security analysis and correctness proofs.
Blockchain researchers, formal methods specialists, and smart contract developers who need to verify contract correctness, analyze EVM behavior formally, or build tools atop a precise semantics.
Developers choose KEVM because it offers a complete, executable formal semantics that passes the official Ethereum test suite, supports both concrete and symbolic execution backends, and integrates with proof tools for verification, making it the most rigorous open-source EVM specification available.
K Semantics of the Ethereum Virtual Machine (EVM)
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a complete, executable semantics using K's rewrite rules, passing the official Ethereum Test Set for high fidelity, as noted in the README.
Supports concrete execution via LLVM backend for testing and symbolic execution via Haskell backend for verification, enabling both practical and analytical use cases.
Works with the K Reachability Logic Prover to formally verify smart contract properties, allowing for rigorous correctness proofs beyond typical testing.
Includes abstractions for ABI, storage layouts, and JSON-RPC, facilitating easier contract specification and analysis, as detailed in the repository structure.
Initial setup can take 30 minutes to an hour with multiple dependencies like Haskell Stack and LLVM, and building from source requires platform-specific configurations, as warned in the README.
Requires expertise in the K framework and formal methods, making it inaccessible for developers without specialized knowledge or time for the learning curve.
Designed primarily for analysis and verification, not for deploying or running contracts in live environments, limiting its application to pre-production stages.