From 2c514e9e70f5c0e7c354280beebc65dca71dbf80 Mon Sep 17 00:00:00 2001 From: "David A. Harding" Date: Tue, 20 Oct 2020 08:26:27 -0400 Subject: [PATCH] Topics: suggested edits to Simplicity topic --- _topics/en/simplicity.md | 45 ++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/_topics/en/simplicity.md b/_topics/en/simplicity.md index 1558953cce..787000763b 100644 --- a/_topics/en/simplicity.md +++ b/_topics/en/simplicity.md @@ -9,30 +9,39 @@ categories: ## Required. Use Markdown formatting. Only one paragraph. No links allowed. excerpt: > - **Simplicity** is a work in progress low level programming language with + **Simplicity** is a work-in-progress low-level programming language with greater flexibility and expressiveness than Bitcoin Script. It allows you to verify the safety, security and costs of a program. It also offers native merklized scripting, formal semantics and type checking. To use - Simplicity on Bitcoin requires a soft fork and a proposal is unlikely to be - formalized until at least 2022. Currently there is Simplicity support for - test branches of Bitcoin and Elements. + Simplicity on Bitcoin will require a soft fork and such a proposal has + not yet been made. Currently there is Simplicity support for test + branches of the ElementsProject.org and Bitcoin Core codebases. ## Optional. Use Markdown formatting. Multiple paragraphs. Links allowed. extended_summary: | - Simplicity includes supports for Jets, pre-made building blocks that can be - combined to construct Simplicity programs. They have efficient machine-code - implementations for raw performance. At its core Simplicity consists of - nine primitive operators called combinators where semantics are formally - specified. However, implementing Bitcoin functionality at such a low level - typically results in large, slow and expensive programs. So instead - functionality like hash functions and signature verification are implemented - in higher level languages like C which are then proved to be equivalent to - the pure Simplicity programs. Assuming Simplicity is soft forked into Bitcoin - with sufficient jets at some stage, proposed soft forks like - [SIGHASH_ANYPREVOUT][topic sighash_noinput] could be utilized on Bitcoin - without needing a separate soft fork. Although Simplicity provides certain - proofs of correctness, care still needs to be applied in the design of any - contract protocol. + At its core, Simplicity consists of nine primitive operators called + combinators whose semantics are formally specified. However, + implementing Bitcoin functionality at such a low level results in + large, slow and expensive programs. Pre-written Simplicity programs + that implement basic functions can be added to Bitcoin consensus so + that other Simplicity programs can inline those functions using a + short identifier, eliminating their size penalty. The functionality + of the inlined Simplicity code can then be reimplemented in more + efficient languages, such as C, which can be proved to be equivalent + to the pure Simplicity program---eliminating speed or memory + penalties. These substitutions (called *jets*) allow an entire + program to be specified in the Simplicity language, including + operations like hash functions and signature verification, and yet + be executed using code from other languages to achieve performance + similar to today's Bitcoin Script. + + Assuming Simplicity is soft forked into Bitcoin with sufficient jets + at some stage, new features such as [SIGHASH_ANYPREVOUT][topic + sighash_noinput]---which currently requires a soft fork to + implement---could be used on Bitcoin without needing separate + consensus rule changes. Although Simplicity provides certain proofs of + correctness, care will still need to be applied in the design of any + contract protocol that relies on more than just bitcoin encumbrances. ## Optional. Produces a Markdown link with either "[title][]" or ## "[title](link)"