@@ -9,30 +9,39 @@ categories:
99
1010# # Required. Use Markdown formatting. Only one paragraph. No links allowed.
1111excerpt : >
12- **Simplicity** is a work in progress low level programming language with
12+ **Simplicity** is a work-in- progress low- level programming language with
1313 greater flexibility and expressiveness than Bitcoin Script. It allows
1414 you to verify the safety, security and costs of a program. It also offers
1515 native merklized scripting, formal semantics and type checking. To use
16- Simplicity on Bitcoin requires a soft fork and a proposal is unlikely to be
17- formalized until at least 2022. Currently there is Simplicity support for
18- test branches of Bitcoin and Elements .
16+ Simplicity on Bitcoin will require a soft fork and such a proposal has
17+ not yet been made. Currently there is Simplicity support for test
18+ branches of the ElementsProject.org and Bitcoin Core codebases .
1919
2020# # Optional. Use Markdown formatting. Multiple paragraphs. Links allowed.
2121extended_summary : |
22- Simplicity includes supports for Jets, pre-made building blocks that can be
23- combined to construct Simplicity programs. They have efficient machine-code
24- implementations for raw performance. At its core Simplicity consists of
25- nine primitive operators called combinators where semantics are formally
26- specified. However, implementing Bitcoin functionality at such a low level
27- typically results in large, slow and expensive programs. So instead
28- functionality like hash functions and signature verification are implemented
29- in higher level languages like C which are then proved to be equivalent to
30- the pure Simplicity programs. Assuming Simplicity is soft forked into Bitcoin
31- with sufficient jets at some stage, proposed soft forks like
32- [SIGHASH_ANYPREVOUT][topic sighash_noinput] could be utilized on Bitcoin
33- without needing a separate soft fork. Although Simplicity provides certain
34- proofs of correctness, care still needs to be applied in the design of any
35- contract protocol.
22+ At its core, Simplicity consists of nine primitive operators called
23+ combinators whose semantics are formally specified. However,
24+ implementing Bitcoin functionality at such a low level results in
25+ large, slow and expensive programs. Pre-written Simplicity programs
26+ that implement basic functions can be added to Bitcoin consensus so
27+ that other Simplicity programs can inline those functions using a
28+ short identifier, eliminating their size penalty. The functionality
29+ of the inlined Simplicity code can then be reimplemented in more
30+ efficient languages, such as C, which can be proved to be equivalent
31+ to the pure Simplicity program---eliminating speed or memory
32+ penalties. These substitutions (called *jets*) allow an entire
33+ program to be specified in the Simplicity language, including
34+ operations like hash functions and signature verification, and yet
35+ be executed using code from other languages to achieve performance
36+ similar to today's Bitcoin Script.
37+
38+ Assuming Simplicity is soft forked into Bitcoin with sufficient jets
39+ at some stage, new features such as [SIGHASH_ANYPREVOUT][topic
40+ sighash_noinput]---which currently requires a soft fork to
41+ implement---could be used on Bitcoin without needing separate
42+ consensus rule changes. Although Simplicity provides certain proofs of
43+ correctness, care will still need to be applied in the design of any
44+ contract protocol that relies on more than just bitcoin encumbrances.
3645
3746# # Optional. Produces a Markdown link with either "[title][]" or
3847# # "[title](link)"
0 commit comments