Skip to content

leonardoalt/ethereum_formal_verification_overview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 

Repository files navigation

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-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.
  • 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

Other Lists

About

Overview of the formal verification projects in the Ethereum ecosystem.

Resources

License

Stars

353 stars

Watchers

18 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors