
Every now and then it's important to brush up on your fundamentals, especially in an arena like Bitcoin which combines many disparate, dense disciplines. I think the above thread from our friend Yassine is a great introduction and high-level description of Bitcoin's scripting language. Though it is pretty technical, again, I believe it is important to at least have a semblance of an idea of how this stuff works.
2/ Script’s key design goal: computationally simple and compact, with native support for cryptographic operations
— Yassine Elmandjra (@yassineARK) October 1, 2018
4/ Script is Turing Incomplete: Unable to compute arbitrarily powerful functions... by design! “Miners have to run scripts, which are submitted by arbitrary participants in the network. They should not have the power to submit a script that might have an infinite loop.”
— Yassine Elmandjra (@yassineARK) October 1, 2018
6/ Script is small: 1 byte represents 1 instruction. 256 bytes. 256 instructions. 15 are disabled. 75 are reserved.
— Yassine Elmandjra (@yassineARK) October 1, 2018
8/ Script’s quirk: a multisignature implementation bug. CHECKMULTSIG instruction pops an extra data value off the stack and is dealt with by putting an extra dummy variable onto the stack.
— Yassine Elmandjra (@yassineARK) October 1, 2018
10/ Bitcoin nodes, by default, have a whitelist of standard scripts, generally refusing to accept scripts that are not on the list. Most common script executed is one that specifies one public key and requires a signature for that public key to spend the coins.
— Yassine Elmandjra (@yassineARK) October 1, 2018
12/ Applications of Bitcoin scripts:
— Yassine Elmandjra (@yassineARK) October 1, 2018
Escrow Transactions (implemented using a 2 of 3 multisig transaction), Green Addresses (3rd party trust trick that resolves waiting for confirmation), efficient micropayment, lock time
Here's a link to the list of resources Yassine used to help craft the thread. If you're currently bored and want to learn a bit about the technical details of Bitcoin, I highly recommend you start exploring these resources. A great way to waste company time on a Wednesday afternoon.
There are not enough bitcoins for everyone with a Coinbase account to own one. https://t.co/1NJpD6N6MJ
— Jameson Lopp (@lopp) October 3, 2018
Except, woah. tick... tock...
Final thought...
Dirty fingernails are the bane of my existence. I feel like a creature when my fingernails are dirty in public.