Skip to main content
9 votes
Accepted

Is bitcoin script necessary?

was it necessary to have another language for these operations? isn't it possible to write the whole runtime in one language? To be clear: the goal of the scripting language isn't for defining the ...
Pieter Wuille's user avatar
6 votes
Accepted

In theory could we skip the proposed Taproot soft fork, activate Simplicity instead and use Simplicity to write the equivalent of Taproot scripts?

I think that's both very premature, and misses the point. Simplicity is a completely different approach to scripting, with significant advantages, but it's being designed from the ground up. There is ...
Michael Folkson's user avatar
6 votes
Accepted

How is Simplicity better suited for static analysis compared to script?

For this answer, I will mainly focus on static analysis of computation resources such as memory use and time. In Simplicity, we have a separation between the Simplicity language and the language of ...
Russell O'Connor's user avatar
5 votes
Accepted

How does Elements integrate Simplicity?

It has always been the case that the full Bit Machine would be "exposed"[1] by allowing arbitrary Simplicity. This is because the combinators that let you compose the high-level jets are exactly the ...
Russell O'Connor's user avatar
4 votes

Is bitcoin script necessary?

It is theoretically possible that Satoshi could have taken the entire C++ language (Bitcoin Core is written in C++) and then severely restricted what C++ functionality was available for Bitcoin ...
Michael Folkson's user avatar
3 votes

Difference and resources for Miniscript and Simplicity?

Miniscript is an encoding of Bitcoin Script. The functionality of Miniscript is a subset of Script so there is nothing you can do with Miniscript that you can't do with Script. Therefore scripts ...
Michael Folkson's user avatar
3 votes
Accepted

Pruning a Simplicity case expression

The definition of cond is cond thn els = match (drop els) (drop thn) Expanding this in your definition of full yields full = match (drop unit) (drop u) The correct pruned version should be pruned ...
Russell O'Connor's user avatar
3 votes
Accepted

Intuition for Simplicity's CheckSigHashAll

Your understanding of the commitment root is correct. Taking advantage of Haskell's laziness, feel free to put undefined into the signature when computing the commitment root. At the moment, the ...
Russell O'Connor's user avatar
3 votes

Is bitcoin script necessary?

Consider a script that says While (true) { // some pointless but slow calculation } in order to discover if the transaction containing it is valid, every node on the network has to run this ...
RedGrittyBrick's user avatar
2 votes
Accepted

Is it possible to design a recursive covenant opcode that results in a full node stuck in an infinite verification loop?

Thanks to Russell O'Connor and Sanket Kanjalkar for answering this on IRC (I've only lightly paraphrased their answers, any errors are my own though.) Is it possible to design a new opcode enabling ...
Michael Folkson's user avatar

Only top scored, non community-wiki answers of a minimum length are eligible