A Coq framework for formal verification, property-based testing, and extraction of smart contracts.
ConCert is a framework for smart contract verification and development using the Coq proof assistant. It enables formal verification of contract correctness, property-based testing to find vulnerabilities, and extraction to executable blockchain languages. The framework helps prevent real-world attacks and ensures mathematical guarantees for decentralized applications.
Blockchain developers and researchers building high-assurance smart contracts, particularly those working on DeFi protocols or security-critical applications requiring formal verification.
ConCert provides an integrated toolkit for end-to-end smart contract verification—from formal proofs in Coq to extracted, executable code—offering stronger security guarantees than testing alone. Its property-based testing framework has successfully identified real-world vulnerabilities in major DeFi platforms.
A framework for smart contract verification in Coq
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Formally embeds the λsmart language, enabling mathematical proofs of contract correctness, as demonstrated in peer-reviewed papers like those cited in the README.
Property-based testing framework has identified and prevented multi-million dollar attacks on DeFi platforms such as Bzx, showing practical security impact documented in medium articles.
Supports extraction to multiple languages including Liquidity for Tezos and Rust for general use, with extraction verified within Coq itself, as detailed in the extraction folder.
Models full blockchain execution environments, allowing testing of contract interactions and state transitions, essential for DeFi protocols like decentralized exchanges.
Requires deep knowledge of Coq and dependent types, with complex setup involving opam, specific Rocq versions, and dependencies like MetaRocq, as outlined in the build instructions.
No extraction to Solidity, the most common smart contract language, limiting its use for Ethereum-based projects despite supporting niche languages like CameLIGO.
Documentation is academic-oriented, with heavy reliance on papers and theses rather than practical tutorials, which may hinder adoption by industry developers.