leonardoalt/ethereum_formal_verification_overview

Overview of the formal verification projects in the Ethereum ecosystem.

376

36 commits

updated Sep 9, 2026

See the code

README

Ethereum Formal Verification

This page gives an overview of the formal verification (and related analysis) projects in the Ethereum ecosystem. It extends and updates pirapira/ethereum-formal-verification-overview.

The focus is formal verification and other types of analysis of smart contracts, while also gathering information about formal verification of protocols and compilers.

The lists are not complete, and you are encouraged to visit the project pages to learn more about them.

Please do not hesitate to open an issue/PR if you have information that is not present here or if you find a mistake.

Maintenance status: entries marked ⚠️ are archived or have had no commits in over a year (as of June 2026). They are kept for historical reference; an inactive project may still be perfectly usable.

Contents

Smart Contracts

There are several projects aiming at formal specification and verification of smart contracts. The list below is separated by target language / technique and then sorted alphabetically. A few resource links are given with each project; for more, please visit the project's page.

There is also an overwhelming amount of papers describing techniques related to formal verification of smart contracts. For example, visit ntu-srslab/smart-contract-publications and type 2020 into the search box. For that reason I am not listing any more papers describing techniques for which I could not find the actual tool.

Learning

  • Formal Methods for DeFi Developers: a course sequence for training developers in the use & development of formal methods and formal tools. ⚠️ No commits since 2022-07.

Specification

Fuzzing

  • Echidna: A fast smart contract fuzzer. It is designed for fuzzing and property-based testing.
  • Harvey: A fuzzer for Ethereum smart contracts.
  • hevm: hevm is many things as you will see below, including a fuzzer. The fuzzer can also be used to try to break invariants.
  • ItyFuzz: Snapshot-based hybrid fuzzer for EVM (and MoveVM) bytecode that combines fuzzing with symbolic execution to reach deep states quickly.

Economics / Game Theory

EVM Bytecode

Solidity

Vyper

  • Vyper-HOL: Semantics of Vyper and verified compilation of Vyper in HOL4.
  • 2vyper: Automatic verifier for Vyper smart contracts, based on the Viper verification infrastructure. ⚠️ No commits since 2023-02.
  • FVyper: A collection of useful Vyper contracts developed with formal methods (KEVM). ⚠️ Archived; no commits since 2021-04.
  • KVyper: Semantics of Vyper in K. ⚠️ No commits since 2018-08.

Compilers & Intermediate Languages

Solidity / Yul

  • Yul-ACL2. The semantics of the IR Yul formalized in the ACL2 framework.
  • yul-compiler: A verified compiler from a fragment of Yul to EVM bytecode in Lean 4, proven correct against yul-semantics and EvmSemantics, rejecting what it cannot verify rather than emitting unverified code.
  • Yul-Isabelle. The semantics of the IR Yul formalized in Isabelle. ⚠️ No commits since 2022-11.
  • Yul-Lean: A formal specification of the Yul IR semantics in the Lean proof assistant.
  • yul-semantics: A gas-free big-step relational semantics of Yul in Lean 4, parameterized over an abstract dialect, with an executable interpreter proven adequate.
  • Solidity Optimizer Transformations. Formalizes in ACL2 and verifies correctness of some of the Yul optimizer transformations present in the Solidity compiler.
  • Yul-K: The semantics of the IR Yul formalized in the K framework. ⚠️ Archived; no commits since 2019-10.

Ethereum Protocol

Consensus Layer

Formerly labelled "Eth2" / "Ethereum 2.0" (the Beacon Chain and its "Phase 0" rollout). The Eth1/Eth2 terminology has since been deprecated in favor of "execution layer" and "consensus layer".

Zero-Knowledge Applications & Arithmetic Circuits

  • ACL2 formalization of Semaphore
  • Cairo verification using Lean
  • circomspect: Trail of Bits static analyzer/linter for Circom circuits, with multiple passes that flag under-constrained signals and other circuit bugs. ⚠️ No commits since 2024-06.
  • circuzz: Metamorphic and differential fuzzing pipeline for zero-knowledge circuit compiler toolchains.
  • CIVER: Modular verifier of weak safety (absence of under-constrained signals), tag specifications, and pre/postconditions for Circom circuits.
  • Coda: A statically-typed language for ZK circuits with a refinement type system that discharges proof obligations to Coq.
  • Ecne: An engine for verifying the soundness of R1CS constraints. ⚠️ No commits since 2022-08.
  • gnark-lean-extractor: Extracts gnark (zk-SNARK library) circuits defined in Go into Lean for formal verification. ⚠️ No commits since 2025-04.
  • Korrekt (halo2-analyzer): Uses abstract interpretation and SMT to detect under-constrained cells and unused gates/columns in Halo2 (PLONKish) circuits.
  • Leo
  • Picus: Automated verifier (Veridise) for the uniqueness / under-constrained property of ZKP circuits (Circom, R1CS, gnark), using SMT solvers. ⚠️ No commits since 2024-03 (an actively maintained fork lives at chyanju/Picus).
  • Verified zk(E)VM: A research effort accelerating the application of formal verification to zk(E)VMs in Lean (verified-zkevm.org).
    • ArkLib: Formally verified arguments of knowledge in Lean.
    • clean: A verified Lean circuit DSL.
    • evm-asm: An experimental verified macro assembler in Lean 4 over a RISC-V RV64IM backend, targeting a zkEVM stateless block validator with no compiler in the trusted computing base.
  • zkFuzz: Program-mutation fuzzing framework for ZK circuits, formalizing a Trace-Constraint Consistency Test to find under/over-constraint bugs.

Other Lists

Contributors

leonardoalt

13 commits

MrChico

4 commits

webthethird

3 commits

hajduakos

3 commits

leonardoalt/ethereum_formal_verification_overview

Overview of the formal verification projects in the Ethereum ecosystem.

376

36 commits

updated Sep 9, 2026

See the code

README

Ethereum Formal Verification

This page gives an overview of the formal verification (and related analysis) projects in the Ethereum ecosystem. It extends and updates pirapira/ethereum-formal-verification-overview.

The focus is formal verification and other types of analysis of smart contracts, while also gathering information about formal verification of protocols and compilers.

The lists are not complete, and you are encouraged to visit the project pages to learn more about them.

Please do not hesitate to open an issue/PR if you have information that is not present here or if you find a mistake.

Maintenance status: entries marked ⚠️ are archived or have had no commits in over a year (as of June 2026). They are kept for historical reference; an inactive project may still be perfectly usable.

Contents

Smart Contracts

There are several projects aiming at formal specification and verification of smart contracts. The list below is separated by target language / technique and then sorted alphabetically. A few resource links are given with each project; for more, please visit the project's page.

There is also an overwhelming amount of papers describing techniques related to formal verification of smart contracts. For example, visit ntu-srslab/smart-contract-publications and type 2020 into the search box. For that reason I am not listing any more papers describing techniques for which I could not find the actual tool.

Learning

  • Formal Methods for DeFi Developers: a course sequence for training developers in the use & development of formal methods and formal tools. ⚠️ No commits since 2022-07.

Specification

Fuzzing

  • Echidna: A fast smart contract fuzzer. It is designed for fuzzing and property-based testing.
  • Harvey: A fuzzer for Ethereum smart contracts.
  • hevm: hevm is many things as you will see below, including a fuzzer. The fuzzer can also be used to try to break invariants.
  • ItyFuzz: Snapshot-based hybrid fuzzer for EVM (and MoveVM) bytecode that combines fuzzing with symbolic execution to reach deep states quickly.

Economics / Game Theory

EVM Bytecode

Solidity

Vyper

  • Vyper-HOL: Semantics of Vyper and verified compilation of Vyper in HOL4.
  • 2vyper: Automatic verifier for Vyper smart contracts, based on the Viper verification infrastructure. ⚠️ No commits since 2023-02.
  • FVyper: A collection of useful Vyper contracts developed with formal methods (KEVM). ⚠️ Archived; no commits since 2021-04.
  • KVyper: Semantics of Vyper in K. ⚠️ No commits since 2018-08.

Compilers & Intermediate Languages

Solidity / Yul

  • Yul-ACL2. The semantics of the IR Yul formalized in the ACL2 framework.
  • yul-compiler: A verified compiler from a fragment of Yul to EVM bytecode in Lean 4, proven correct against yul-semantics and EvmSemantics, rejecting what it cannot verify rather than emitting unverified code.
  • Yul-Isabelle. The semantics of the IR Yul formalized in Isabelle. ⚠️ No commits since 2022-11.
  • Yul-Lean: A formal specification of the Yul IR semantics in the Lean proof assistant.
  • yul-semantics: A gas-free big-step relational semantics of Yul in Lean 4, parameterized over an abstract dialect, with an executable interpreter proven adequate.
  • Solidity Optimizer Transformations. Formalizes in ACL2 and verifies correctness of some of the Yul optimizer transformations present in the Solidity compiler.
  • Yul-K: The semantics of the IR Yul formalized in the K framework. ⚠️ Archived; no commits since 2019-10.

Ethereum Protocol

Consensus Layer

Formerly labelled "Eth2" / "Ethereum 2.0" (the Beacon Chain and its "Phase 0" rollout). The Eth1/Eth2 terminology has since been deprecated in favor of "execution layer" and "consensus layer".

Zero-Knowledge Applications & Arithmetic Circuits

  • ACL2 formalization of Semaphore
  • Cairo verification using Lean
  • circomspect: Trail of Bits static analyzer/linter for Circom circuits, with multiple passes that flag under-constrained signals and other circuit bugs. ⚠️ No commits since 2024-06.
  • circuzz: Metamorphic and differential fuzzing pipeline for zero-knowledge circuit compiler toolchains.
  • CIVER: Modular verifier of weak safety (absence of under-constrained signals), tag specifications, and pre/postconditions for Circom circuits.
  • Coda: A statically-typed language for ZK circuits with a refinement type system that discharges proof obligations to Coq.
  • Ecne: An engine for verifying the soundness of R1CS constraints. ⚠️ No commits since 2022-08.
  • gnark-lean-extractor: Extracts gnark (zk-SNARK library) circuits defined in Go into Lean for formal verification. ⚠️ No commits since 2025-04.
  • Korrekt (halo2-analyzer): Uses abstract interpretation and SMT to detect under-constrained cells and unused gates/columns in Halo2 (PLONKish) circuits.
  • Leo
  • Picus: Automated verifier (Veridise) for the uniqueness / under-constrained property of ZKP circuits (Circom, R1CS, gnark), using SMT solvers. ⚠️ No commits since 2024-03 (an actively maintained fork lives at chyanju/Picus).
  • Verified zk(E)VM: A research effort accelerating the application of formal verification to zk(E)VMs in Lean (verified-zkevm.org).
    • ArkLib: Formally verified arguments of knowledge in Lean.
    • clean: A verified Lean circuit DSL.
    • evm-asm: An experimental verified macro assembler in Lean 4 over a RISC-V RV64IM backend, targeting a zkEVM stateless block validator with no compiler in the trusted computing base.
  • zkFuzz: Program-mutation fuzzing framework for ZK circuits, formalizing a Trace-Constraint Consistency Test to find under/over-constraint bugs.

Other Lists

Contributors

leonardoalt

13 commits

MrChico

4 commits

webthethird

3 commits

hajduakos

3 commits