TL;DR
Simplicity is a new, Turing-incomplete functional language designed for blockchain applications, offering formal semantics, resource analysis, and expressiveness suitable for smart contracts, improving upon existing crypto languages.
Contribution
It introduces Simplicity, a formal, resource-analyzable language for blockchains that avoids loops and recursion, with semantics verified in Coq and an operational model called the Bit Machine.
Findings
Formal denotational semantics in Coq
Resource bounds can be statically derived
Expresses all finitary functions for smart contracts
Abstract
Simplicity is a typed, combinator-based, functional language without loops and recursion, designed to be used for crypto-currencies and blockchain applications. It aims to improve upon existing crypto-currency languages, such as Bitcoin Script and Ethereum's EVM, while avoiding some of the problems they face. Simplicity comes with formal denotational semantics defined in Coq, a popular, general purpose software proof assistant. Simplicity also includes operational semantics that are defined with an abstract machine that we call the Bit Machine. The Bit Machine is used as a tool for measuring the computational space and time resources needed to evaluate Simplicity programs. Owing to its Turing incompleteness, Simplicity is amenable to static analysis that can be used to derive upper bounds on the computational resources needed, prior to execution. While Turing incomplete, Simplicity can…
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.
