bitcoin-dev

Combined summary - Simplicity: An alternative to Script

Combined summary - Simplicity: An alternative to Script

Russell O'Connor, a Bitcoin developer, has proposed an alternative to Bitcoin Script called Simplicity.

This language is a low-level, typed, functional, native MAST language designed to operate at the consensus layer. Simplicity comes with formal denotational semantics and operational semantics that have been proven equivalent in the Coq proof assistant. The language also includes 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 with C code to reduce the sigops/weight/fee-cost of transactions. These jets will cover arithmetic operations, elliptic curve operations, and cryptographic operations including hashing and digital signature validation. The final design of Simplicity includes full convent support, support for signature aggregation, and support for delegation.The author plans to develop a broad set of useful jets covering arithmetic operations, elliptic curve operations, and cryptographic operations. Simplicity's denotational semantics do not imply an order of operations, but the author plans to address this by using Luke's fail-success-on-unknown-operation. The language also includes extensions such as full convent support, signature aggregation, and delegation.The author is working on producing an SDK that will include formal semantics, correctness proofs, a Haskell implementation, and a C interpreter for Simplicity. After the SDK is complete, Simplicity will be made available in the Elements project for experimentation in sidechains. However, it will only be considered for inclusion in Bitcoin after extensive vetting.In a recent bitcoin-dev email thread, there were discussions about how to deal with "jets" in Bitcoin. One proposal suggested using discounted jets for scripting. Another proposal suggested using script versions to encode optimized jets and their costs. These proposals are independent of Simplicity but can be applied to it.Overall, Simplicity is a promising alternative to Bitcoin Script, offering a low-level, typed, functional, and native MAST language with formal denotational and operational semantics. It aims to enhance privacy and reduce resource costs through branch pruning and the use of jets. The author is actively working on developing the language further and plans to make it available for experimentation in sidechains. However, more research and vetting are needed before considering Simplicity for inclusion in Bitcoin. O'Connor emphasized that this work is not intended to delay consideration of the various Merkelized Script proposals currently ongoing.

Discussion History

0
Russell O'ConnorOriginal Post
October 30, 2017 15:22 UTC
1
October 30, 2017 15:31 UTC
2
October 30, 2017 21:42 UTC
3
October 30, 2017 21:56 UTC
4
October 30, 2017 22:14 UTC
5
October 30, 2017 22:32 UTC
6
October 30, 2017 22:50 UTC
7
October 30, 2017 23:29 UTC
8
October 31, 2017 20:38 UTC
9
October 31, 2017 20:46 UTC
10
October 31, 2017 21:01 UTC
11
November 1, 2017 01:46 UTC