Skip to content

Add schnorr/taproot workshop #241

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

jnewbery
Copy link
Contributor

Adds all the material from the schnorr/taproot workshops:

  • videos
  • slides
  • notebooks
  • link to transcipt

@jnewbery jnewbery force-pushed the 2019-10-schnorr-taproot-workshop branch from 6c2c354 to c17ee03 Compare October 22, 2019 20:45
Copy link
Collaborator

@harding harding left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A handful of nits (feel free to ignore). Since the images are just placeholders for the video files (thanks for doing that), I think their resolution could be lowered dramatically without any loss of effectiveness so that we're not adding 10 MB to the repository size with this commit (still, I don't care that much).

Thanks for creating this post and to everyone for all the work that went into the workshop!

---
{% include references.md %}

In September 2019, Bitcoin Optech organized two workshops in San Francisco and
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: "two workshops in SF and NYC" sounds to me like you did two in SF and two in NYC. Maybe just drop the word "two"?

Also, I believe the name of the state is New York and the name of the city is New York City; however, I defer to your choice as someone living there. By now you probably pronounce it "Neh Yark" anyway.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗽

{% include references.md %}

In September 2019, Bitcoin Optech organized two workshops in San Francisco and
New York on the schnorr/taproot softfork proposals. The aims of the workshop
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: I think "workshop" should either be plural or should grouped ("each workshop").

New York on the schnorr/taproot softfork proposals. The aims of the workshop
were to:

1. share current thinking in the open source community on the proposals;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: s/on/about/ (generally we're interested in what people are thinking about, not what they're thinking on (especially if they're thinking on the toilet))

those workshops, so engineers at home can learn about these exciting new
technologies.

The workshop is split into 4 sections:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/workshop/workshops/ and s/is/was/ ?


John Newbery introduces the workshop, giving a summary of why schorr and
taproot are useful technologies. He also explains why Bitcoin Optech created
the workshop, and what the aims of the workshop are.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: no comma. The usual rule for a non-list comma preceding a conjunction are only to use the comma if the following phrase is an independent clause (e.g. it could be its own sentence). "What the aims of the workshop are" doesn't pass that test.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep. Thanks. This was vestigial from before I split this into two sentences.

[![Introduction to Taproot](/img/posts/taproot-workshop/taproot-intro.png)](https://www.youtube.com/watch?v=KLNH0ttpdFg&list=PLPrDsP88ifOVTEJf_jQGunDUS05M9GdIC&index=5)
{:.center}

James Chiang gives an overview of the bip-taproot/bip-tapscript proposals. This
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: previously you've written "bip-taproot and bip-tapscript" but here you use only a slash to separate them; maybe use "and" for consistency? (This is definitely a do-as-I-say-and-not-as-I-do advice, since I'm lazy/use slashes all the time.)

#### 2.2 Taptweak

[![Taptweak](/img/posts/taproot-workshop/taptweak.png)](https://www.youtube.com/watch?v=EkGbPxAExdQ&list=PLPrDsP88ifOVTEJf_jQGunDUS05M9GdIC&index=7)
{:.center}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No comment here, just a rouge meme.

taptweak

3e2gcy

Copy link

@jachiang jachiang Oct 23, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@harding, what is a rouge meme?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Rouge meme (n): a meme that has been pasted somewhere you don't normally paste memes, such as GitHub review comments" ---Harding's Dictionary of Made-Up Terms, 17th edition

#### 2.5 Huffman Construction

_(No video)_ This bonus chapter shows how to most efficiently construct a tree
of scripts, by placing scripts that are more likely to be spent closer to the
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: no comma

Copy link
Collaborator

@jonatack jonatack Oct 23, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree with @harding on the comma here

Copy link
Collaborator

@jonatack jonatack left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few fixes and nits. Looking forward to going through these workshops!

up the jupyter notebook environment, gives a refresher on basic elliptic
curve math, and introduces tagged hashes.
2. [Schnorr signatures and MuSig](#schnorr-signatures-and-musig) - describes
the bip-schnorr signature scheme, and how to use MuSig to aggregate multiple
Copy link
Collaborator

@jonatack jonatack Oct 23, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: remove the comma here as the second clause isn't a proper sentence/independent clause.

2. [Schnorr signatures and MuSig](#schnorr-signatures-and-musig) - describes
the bip-schnorr signature scheme, and how to use MuSig to aggregate multiple
public keys and partial signatures into a single pubkey/signature.
3. [Taproot](#taproot) - explains how to embed a commitment to a single script
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/to/into/ ?

"embed to" seems incorrect

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The to here is attached to the commitment ('a commitment to'). The into later in sentence belongs to the embed ('explains how to embed ... into a tweaked public key'). I agree that the sentence isn't very clear. I've tried shifting it around a bit. Let me know if you think that's an improvement.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @jnewbery, I think the new version is much better.

[![Introduction](/img/posts/taproot-workshop/introduction.png)](https://www.youtube.com/watch?v=1gRCVLgkyAE&list=PLPrDsP88ifOVTEJf_jQGunDUS05M9GdIC)
{:.center}

John Newbery introduces the workshop, giving a summary of why schorr and
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/schorr/schnorr/


## Preparation and Basic Math

This section shows how to setup the jupyter notebook, gives a refresher on
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/setup/set up/

"setup" is a noun, "set up" is the verb

[![Introduction](/img/posts/taproot-workshop/elliptic-curve-math.png)](https://www.youtube.com/watch?v=oix8ov9iGgk&list=PLPrDsP88ifOVTEJf_jQGunDUS05M9GdIC&index=2)
{:.center}

Elichai Turkel gives a refresher on the basic elliptic curve math that will be
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The word "gives" is used repeatedly. Consider varying, for instance with "provides".

[![Tapscript](/img/posts/taproot-workshop/tapscript.png)](https://www.youtube.com/watch?v=nXGe9_M5pjk&list=PLPrDsP88ifOVTEJf_jQGunDUS05M9GdIC&index=8)
{:.center}

James shows how using a taptweak, we can commit a tapscript in a segwit v1
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

idem re "shows"

"taptweak" could be read as tapt weak or tap tweak, perhaps separate the two words unless this is an established word?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we use taptweak throughout the workshop (and it's used in bip-taproot as a hash tag: https://github.com/sipa/bips/blob/bip-schnorr/bip-taproot.mediawiki)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, I find "TapTweak" in the BIP to be clearer with the capital letters separation

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Our style guide states that taproot is a common noun and uncapitalized. For consistency, we therefore use tapscript, taptree, taptweak, etc.

{:.center}

James shows how a merkle tree of scripts can be constructed, and how we can
commit that tree using a taptweak. He then shows how to spend the output by
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

idem re shows and taptweak

#### 2.5 Huffman Construction

_(No video)_ This bonus chapter shows how to most efficiently construct a tree
of scripts, by placing scripts that are more likely to be spent closer to the
Copy link
Collaborator

@jonatack jonatack Oct 23, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree with @harding on the comma here

workshops.md Outdated
presentations, coding exercises and discussions, and will give engineers at
functionality.

Bitcoin Optech hosted two seminar format workshops whichi included a mixture of
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/whichi/which/

workshops.md Outdated
member companies an understanding of how these new technologies work and how
they can be applied to their products and services. They will also give
they can be applied to their products and services. The workshops also gave
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

perhaps "provided" to not write "gave" twice in the same paragraph

community feedback process for these proposals.

[slides]: /img/posts/taproot-workshop/taproot-workshop.pdf
[transcript]: http://diyhpl.us/wiki/transcripts/bitcoinops/schnorr-taproot-workshop-2019/notes/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https on this link please and thank you

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI, you could probably setup an automatically http→https redirect on your server. The reason I (and it seems others) keep using http is because that's the URL we copied/pasted while viewing the transcript.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@jnewbery
Copy link
Contributor Author

Addressed all comments from @harding @jonatack @kanzure . Thanks for the reviews!

Copy link
Collaborator

@jonatack jonatack left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quick re-read.

or multiple scripts into a tweaked public key. Shows how to spend a segwit v1
output using either the key path spend (with a single signature) or a script
path spend.
3. [Taproot](#taproot) - demostrates how to create and then spend a segwit v1 output
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/demostrates/demonstrates/

taproot are useful technologies. He also explains why Bitcoin Optech created
the workshop, and what the aims of the workshop are.
the workshop and what the aims of the workshop are.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: I think this sentence could be improved further. Workshop is used redundantly and the sentence ends a bit inelegantly with "and what the aims of the workshop are."

Perhaps: "He then outlines the workshop's aims" (or goals).

@@ -116,7 +117,7 @@ scripts.
[![Introduction to Taproot](/img/posts/taproot-workshop/taproot-intro.png)](https://www.youtube.com/watch?v=KLNH0ttpdFg&list=PLPrDsP88ifOVTEJf_jQGunDUS05M9GdIC&index=5)
{:.center}

James Chiang gives an overview of the bip-taproot/bip-tapscript proposals. This
James Chiang gives an overview of the bip-taproot and bip-tapscript proposals. This
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice -- much better with the "and" here.

@jnewbery jnewbery force-pushed the 2019-10-schnorr-taproot-workshop branch from f8a55e7 to 1990a04 Compare October 23, 2019 19:29
@jnewbery
Copy link
Contributor Author

Added a new commit to reduce image size (thanks for the suggestion @harding ). Obviously I'll squash that before merge to not bloat the repo.

@jnewbery
Copy link
Contributor Author

addressed @jonatack's new review comments (thanks!)

@harding
Copy link
Collaborator

harding commented Oct 24, 2019

Tested ACK via the Netlify preview. I re-reviewed all text, clicked all links, and watched the first few seconds of each video to ensure they were the advertised content. Thanks!

Copy link
Contributor

@bitschmidty bitschmidty left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK

Thanks @jnewbery for putting this together

New York City on the schnorr/taproot softfork proposals. The aims of the workshops
were to:

1. share current thinking in the open source community about the proposals;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems weird to me to end the list items with ; / .

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changed to commas

and explains why Bitcoin Optech created the workshop. He then outlines the
workshop's aims.

## Preparation and Basic Math
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: lowercase basic math

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

[![Segwit Version 1](/img/posts/taproot-workshop/segwit-version-1.png)](https://www.youtube.com/watch?v=n-jAUaSkcAA&list=PLPrDsP88ifOVTEJf_jQGunDUS05M9GdIC&index=6)
{:.center}

James shows how to create segwit version 1 transaction outputs and spend them
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: version 1 here but v1 most elsewhere

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

[![Tapscript](/img/posts/taproot-workshop/tapscript.png)](https://www.youtube.com/watch?v=nXGe9_M5pjk&list=PLPrDsP88ifOVTEJf_jQGunDUS05M9GdIC&index=8)
{:.center}

James discusses how using a taptweak, we can commit a tapscript in a segwit v1
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/how using a taptweak/how, using a taptweak,

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rearranged the sentence

{:.center}

James shows how a merkle tree of scripts can be constructed, and how we can
commit that tree using a taptweak. He then runs through how to spend the output by
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/commit that/commit to that

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


#### 2.0 Introduction to Taproot

[![Introduction to Taproot](/img/posts/taproot-workshop/taproot-intro.png)](https://www.youtube.com/watch?v=KLNH0ttpdFg&list=PLPrDsP88ifOVTEJf_jQGunDUS05M9GdIC&index=5)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This video title should have (2.0) appended to it

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the video doesn't actually correspond with notebook 2.0 (which was added after we ran the workshops). It's an introduction to all the 2.x topics.

@jnewbery jnewbery force-pushed the 2019-10-schnorr-taproot-workshop branch from d3e45c7 to b1e617a Compare October 28, 2019 20:25
@jnewbery
Copy link
Contributor Author

@jnewbery
Copy link
Contributor Author

Addressed all feedback in @bitschmidty's review (thanks!). I plan to squash and merge tomorrow.

@jnewbery jnewbery force-pushed the 2019-10-schnorr-taproot-workshop branch 2 times, most recently from 613fb2e to f952dc2 Compare October 29, 2019 15:19
@jnewbery jnewbery force-pushed the 2019-10-schnorr-taproot-workshop branch from f952dc2 to f84798f Compare October 29, 2019 15:27
@jnewbery
Copy link
Contributor Author

Squashed all commits, updated an image, and fixed the date.

@jnewbery jnewbery merged commit eefc7aa into bitcoinops:master Oct 29, 2019
@jnewbery jnewbery deleted the 2019-10-schnorr-taproot-workshop branch October 29, 2019 15:51
cryptozyu pushed a commit to cryptozyu/bitcoinops.github.io that referenced this pull request Mar 20, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants