bitcoin-dev

Simplicity: An alternative to Script

Simplicity: An alternative to Script

Original Postby Mark Friedenbach

Posted on: October 30, 2017 22:32 UTC

Russell O'Connor presented his work on the design and implementation of an alternative to Bitcoin Script called Simplicity at the PLAS 2017 Workshop on Programming Languages and Analysis for Security.

Simplicity is a low-level, typed, functional, native MAST language where programs are built from basic combinators. It is designed to operate at the consensus layer like Bitcoin Script. Russell plans to develop jets to replace common Simplicity expressions and directly implement them with C code. The jets will cover arithmetic operations, elliptic curve operations, and cryptographic operations including hashing and digital signature validation.Simplicity comes with formal denotational semantics and formal operational semantics. These are both formalized in the Coq proof assistant and proven equivalent. It also comes with easy to compute static analyses that can compute bounds on the space and time resources needed for evaluation. This is important for both node operators and smart-contract participants who can know the costs of their contract before committing to it.As a native MAST language, unused branches of Simplicity programs are pruned at redemption time which enhances privacy, reduces the block weight used, and can reduce space and time resource costs needed for evaluation. To make Simplicity practical, Russell anticipates developing a broad set of useful jets covering various operations. According to him, Simplicity has a long way to go before it can be considered for inclusion in Bitcoin.