bitcoin-dev

Simplicity: An alternative to Script

Simplicity: An alternative to Script

Original Postby Mark Friedenbach

Posted on: October 30, 2017 21:56 UTC

Russell O'Connor, a Bitcoin developer, has proposed an alternative to Bitcoin Script called Simplicity which is a low-level, typed, functional, native MAST language where programs are built from basic combinators.

This language is designed to operate at the consensus layer and comes with formal denotational semantics and operational semantics that have been proven equivalent in the Coq proof assistant. Additionally, Simplicity comes with easy-to-compute static analyses that can calculate bounds on space and time resources needed for evaluation. Simplicity is still in the research and development phase, but it is anticipated that jets will replace common Simplicity expressions that directly implement them with C code. These jets would cover arithmetic operations, elliptic curve operations, and cryptographic operations including hashing and digital signature validation. To make Simplicity practical, these jets would be used to reduce the sigops/weight/fee-cost of transactions. The final design of Simplicity includes full convent support, allowing access to all transaction data, support for signature aggregation, and support for delegation. The language is expected to be made available in the Elements project after extensive vetting, and only then will it be suitable to consider Simplicity for inclusion in Bitcoin. However, this work is not intended to delay consideration of the various Merkelized Script proposals that are currently ongoing.