-
Notifications
You must be signed in to change notification settings - Fork 137
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
Add schnorr/taproot workshop #241
Conversation
6c2c354
to
c17ee03
Compare
There was a problem hiding this 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 |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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; |
There was a problem hiding this comment.
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: |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
[](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 |
There was a problem hiding this comment.
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 | ||
|
||
[](https://www.youtube.com/watch?v=EkGbPxAExdQ&list=PLPrDsP88ifOVTEJf_jQGunDUS05M9GdIC&index=7) | ||
{:.center} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: no comma
There was a problem hiding this comment.
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
There was a problem hiding this 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 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
[](https://www.youtube.com/watch?v=1gRCVLgkyAE&list=PLPrDsP88ifOVTEJf_jQGunDUS05M9GdIC) | ||
{:.center} | ||
|
||
John Newbery introduces the workshop, giving a summary of why schorr and |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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
[](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 |
There was a problem hiding this comment.
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".
[](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 |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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)
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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/ |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
There was a problem hiding this 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 |
There was a problem hiding this comment.
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. |
There was a problem hiding this comment.
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. | |||
[](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 |
There was a problem hiding this comment.
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.
f8a55e7
to
1990a04
Compare
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. |
addressed @jonatack's new review comments (thanks!) |
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! |
There was a problem hiding this 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; |
There was a problem hiding this comment.
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 ; / .
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: lowercase basic math
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
[](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 |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fixed
[](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 |
There was a problem hiding this comment.
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,
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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 | ||
|
||
[](https://www.youtube.com/watch?v=KLNH0ttpdFg&list=PLPrDsP88ifOVTEJf_jQGunDUS05M9GdIC&index=5) |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
d3e45c7
to
b1e617a
Compare
squashed all commits: https://github.com/bitcoinops/bitcoinops.github.io/compare/d3e45c7d4b2819b60a3fac089b17b7fbf5219846..b1e617a9cd5eb97f03648674e42232bd75c2b97b. Will address @bitschmidty feedback next. |
Addressed all feedback in @bitschmidty's review (thanks!). I plan to squash and merge tomorrow. |
613fb2e
to
f952dc2
Compare
f952dc2
to
f84798f
Compare
Squashed all commits, updated an image, and fixed the date. |
Adds all the material from the schnorr/taproot workshops: