Skip to content

Commit 4448177

Browse files
hardingjnewbery
authored andcommitted
Topics: suggested edits to Simplicity topic
1 parent 73680d8 commit 4448177

File tree

1 file changed

+27
-18
lines changed

1 file changed

+27
-18
lines changed

_topics/en/simplicity.md

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,30 +9,39 @@ categories:
99

1010
## Required. Use Markdown formatting. Only one paragraph. No links allowed.
1111
excerpt: >
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.
2121
extended_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

Comments
 (0)