"Simplicity is a blockchain programming language that is so simple, it fits on a t-shirt."
-- Dr. Russel O'Connor, Infrastructure Tech Developer @ Blockstream
Today, Dr. Russell O’Connor of Blockstream is presenting his paper on “Simplicity: A New Language for Blockchains” as part of a session on new languages and tools at PLAS 2017 — the ACM SIGSAC Workshop on Programming Languages and Analysis for Security. The Simplicity programming language is intended as an advancement over existing cryptocurrency languages, avoiding their shortcomings and opening new vistas for smart contracts on blockchains while building on the Bitcoin UTXO model.
As an updated approach improving on Bitcoin Script, the sequent-calculus-based Simplicity language offers a few major improvements, the first of which is completing and extending scripting capabilities. One of the limitations with the current version of Bitcoin Script, Bitcoin’s own programming language, is that a number of opcodes were disabled in Bitcoin’s earliest days. For example, the OP_CAT
opcode that concatenates two strings was disabled. Blockstream’s Elements platform re-enables and adds some opcodes, but O’Connor wanted something more flexible. Simplicity provides complete expressiveness.
Simplicity also offers improved safety. That begins with type-safety: Simplicity is a typed functional programming language utilizing combinators. There’s also safety that comes from analyzability: though Simplicity is finitarily complete, allowing the programming of all finite computations and providing all of the functionality required for a powerful smart contract system, it is Turing incomplete, disallowing unbounded loops and allowing for static analysis. Finally, formal semantics support reasoning about the language in the Coq Proof Assistant, allowing for the safety of formal verification — such as O’Connor’s formally verified implementation of the SHA-256 hash function written in Simplicity.
Simplicity further improves on existing cryptocurrency languages by integrating Merklized Abstract Syntax Trees (MASTs). As a native MAST programming language, Simplicity arranges its programs into trees, then only reveals the portions necessary for redemption; the unused parts of a program are pruned away, increasing privacy and decreasing block space requirements.
O’Connor’s paper on Simplicity offers the first look at this new cryptocurrency language; it’s a Blockstream Research & Development project, with potential uses in Blockstream’s products in the future. The next step will be the release of a Simplicity SDK. In the meantime, if you’d like to learn more about these future possibilities today, read “Simplicity: A New Language for Blockchains”, which contains precise details on how the Simplicity language works.