TL;DR
This paper presents a method for extracting verified Coq programs into functional smart contract languages, incorporating optimizations, testing, and verification within the ConCert framework, enabling secure and tested smart contract development.
Contribution
It introduces a verified extraction process from Coq to functional languages, supports testing of smart contracts, and applies these techniques to complex contracts within ConCert.
Findings
Successfully extracted Coq programs to multiple functional languages.
Implemented an optimization pass for removing unused arguments.
Supported testing of complex smart contracts including DAO, escrow, and DeFi contracts.
Abstract
We implement extraction of Coq programs to functional languages based on MetaCoq's certified erasure. As part of this, we implement an optimisation pass removing unused arguments. We prove the pass correct wrt. a conventional call-by-value operational semantics of functional languages. We apply this to two functional smart contract languages, Liquidity and Midlang, and to the functional language Elm. Our development is done in the context of the ConCert framework that enables smart contract verification. We contribute a verified boardroom voting smart contract featuring maximum voter privacy such that each vote is kept private except under collusion of all other parties. We also integrate property-based testing into ConCert using QuickChick and our development is the first to support testing properties of interacting smart contracts. We test several complex contracts such as a DAO-like…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
