/ethereum_formal_verification_overview

Overview of the formal verification projects in the Ethereum ecosystem.

GNU General Public License v3.0GPL-3.0

Ethereum Formal Verification

This page tries to give an overview of the formal verification (and related) projects in the Ethereum ecosystem, extending and updating https://github.com/pirapira/ethereum-formal-verification-overview.

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

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

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

You might also want to visit the Ethereum Formal Methods Gitter channel.

Compilers

Solidity / Yul

Ethereum 2.0

Phase 0

Smart Contracts

Projects / Tools

There are several projects aiming at formal specification and verification of smart contracts. The list given here is separated by target language and then sorted alphabetically. A few resource links are given with each project. For more resources on a specific project 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 https://ntu-srslab.github.io/smart-contract-publications/ and type 2020 into the search box. For that reason I am not listing anymore papers describing techniques for which I could not find the actual tool.

Learning

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.

Economics / Game Theory

EVM Bytecode

Solidity

Vyper

  • 2vyper: Automatic verifier for Vyper smart contracts, based on the Viper verification infrastructure.
  • FVyper: A collection of useful Vyper contracts developed with formal methods (KEVM).
  • KVyper: Semantics of Vyper in K.

Arithmetic Circuits and Zero Knowledge Applications

Other Lists