Blockstream is introducing Simplicity

Introducing a Programming Language so Simple, It “Fits on a T-shirt”

Blockstream is introducing Simplicity, a new programming language for blockchain-based smart contracts, intended for inclusion in Blockstream’s sidechains and eventually in Bitcoin. The new language was presented by its creator, Russell O’Connor, Infrastructure Tech Developer at Blockstream, at the ACM SIGSAC Workshop on Programming Languages and Analysis for Security (PLAS 2017).

“Simplicity is a blockchain programming language that is so simple, it fits on a t-shirt,” O’Connor told Bitcoin Magazine. “It is critical that smart contracts behave in ways that all participants expect, and applying formal verification to Simplicity allows us to achieve that.”

Simplicity is still a Blockstream Research & Development project, but there’s potential for its use in Blockstream products in the future, according to the company’s announcement.

“Simplicity is flexible enough that I anticipate many new, domain-specific, languages will generate Simplicity, and this will give users the freedom to generate smart contracts using the tools that most suit their needs,” added O’Connor.

O’Connor’s paper, titled “Simplicity: A New Language for Blockchains,” presents Simplicity as “a new programming language, designed to be used for cryptocurrencies and blockchain applications, which aims to improve upon existing cryptocurrency languages, such as Bitcoin Script and Ethereum’s EVM [virtual machine], while avoiding some of the problems they face.”

Bitcoin script is limited by design and unsuitable for complex smart contracts that need more than a small set of simple templates to perform tasks like digital signature verification. Ethereum, on the other hand, includes a more expressive and flexible, Turing-complete programming language, which allows for arbitrarily complex smart-contracts in principle.

But, in practice, Ethereum doesn’t support static analysis to pre-determine the computing resources that a program will require and, thus, filter out too costly contracts and infinite loops. Therefore, pre-paid “gas” fees are lost when an Ethereum program “runs out of gas.” The simpler Bitcoin scripting, which supports static analysis, doesn’t present similar issues.

In a post to the bitcoin-dev mailing list, O’Connor proposed Simplicity as an alternative to Bitcoin Script…

read full article