This aims to address #138.
Restructure motivation/design and add informal summary #871
pull sipa wants to merge 230 commits into bitcoin:master from sipa:201912_reorder_motivation changing 8 files +1131 −0-
sipa commented at 12:30 AM on December 15, 2019: member
-
aeffa07527
Add draft for Schnorr BIP
Includes squashed contributions by GitHub users jonasnick, real-or-random, AustinWilliams, JustinTArthur, ysangkok, RCassatta, Sjors, tnakagawa, and guggero.
-
Add taproot/tapscript bips drafts 6733024595
-
Clarify what 'reduced' means in tests and use word 'message' instead of 'message hash' e9ea1710ef
-
271e5db6d7
Merge pull request #30 from jonasnick/clarify-reduce
Clarify what 'reduced' means in tests and use word 'message' instead of 'message hash'
-
d194620af9
remove duplicate warning
Though perhaps, the emphasis is warranted given its importance. :-)
-
27e61d61e6
Merge pull request #40 from markblundeberg/patch-1
remove duplicate warning
-
0c49346c87
taproot_output_script: first returned byte should be OP_1 (0x51)
If we look at def IsPayToTaproot(script): return len(script) == 35 and script[0] == OP_1 and script[1] == 33 and script[2] >= 0 and script[2] <= 1 First byte is is checked for OP_1. OP_1 is 0x51 But the example code in this BIP returns `bytes([0x01, 0x21, output_pubkey[0] & 1]) + output_pubkey[1:]` First byte 0x01, but it should be 0x51 -
b55fed9f86
Merge pull request #41 from dgpv/patch-1
taproot_output_script: first returned byte should be OP_1 (0x51)
-
Clarify diagram 04b844540e
-
084dee847d
Merge pull request #42 from jonasnick/clarify-diagram
Clarify description of diagram
-
Fix point_from_bytes in bip-schnorr reference implementation 1faf705388
-
Switch to 32 byte public keys in bip-schnorr ed01c1a776
-
Use short public keys for taproot output keys 5793d3d735
-
Clarify how to disable key path spending 9795b7081a
-
Address Tim's comments 112d9c150a
-
30fdc87599
Update bip-schnorr.mediawiki
Co-Authored-By: Tim Ruffing <tim@timruffing.de>
-
ae96228913
Update bip-schnorr/test-vectors.py
Co-Authored-By: Tim Ruffing <tim@timruffing.de>
-
Address sipa's feedback 0d28b3c37b
-
28dc94f36c
Merge pull request #55 from jonasnick/bip-schnorr32
Completely switch to 32-byte public keys in bip-schnorr/taproot/tapscript
-
4fef743de7
Merge pull request #43 from jonasnick/script-path-only
Clarify how to disable key path spending
-
Define c in lift_x(x) ad91099b8f
-
Return a point from lift_x() a462876b9a
-
Replace 'quadratic residue of...' 8492968f34
-
de9bc9c72c
Merge pull request #48 from jnewbery/2019-05-quadratic-residue
Reword 'quadratic residue of...'
-
abe79d81e3
Merge pull request #58 from sipa/201908_computec
Clarify pseudocode of lift_x
-
Use key path spend terminology more consistently in taproot/tapscript 16bdfcf534
-
Prescribe that a taproot output key should always have a taproot commitment ed0bb5b0c2
-
de990a1128
Merge pull request #56 from jonasnick/keypath
Use key path spend terminology more consistently in taproot/tapscript
-
Use a tagged hash in bip-schnorr nonce derivation 7cd53f6eec
-
Tag signature hashes, improve rationale and update test vectors 775cb2fd90
-
Address sipa's comments dc6b91c1a9
-
e1f199989b
Merge pull request #61 from jonasnick/tagged-derive
Use a tagged hash in bip-schnorr nonce derivation
-
public keys aren't identical e9600e6ed8
-
pk not p 01e1f6e6b2
-
make secret key a 32-byte array called sk, introduce pubkey() 4643538d4f
-
use p for taproot internal key d3951f63f3
-
key gen, verify, sign in intro fc74ec6b35
-
note about pubkey collision 30bc716add
-
Fix privkey negation in taproot_sign_key 02bdf88ef9
-
51a84fd407
Merge pull request #63 from jonasnick/fix-sign-key
Fix privkey negation in taproot_sign_key
-
6653f9f883
Merge pull request #59 from ajtowns/201908-schnorr32-nits
32 byte pubkey nits
-
Rework Applications section 6d99e45126
-
Add a footnote about 32-byte security 4a383064fb
-
eabf7c9a6d
Merge pull request #64 from real-or-random/patch-7
Add a footnote about 32-byte security
-
0995c8a5b5
Move plain public key in output rationale to design section
Rebased by Pieter Wuille
-
a02dbdc850
Merge pull request #49 from jonasnick/key-aggregation-security
Prescribe that an output key should always have a taproot commitment
-
10073d1ca5
Merge pull request #65 from real-or-random/patch-6
Rework Applications section
-
Address some nits fa423aced9
-
9424700d78
Merge pull request #66 from sipa/jonasnick_design
Move plain public key in output rationale to design section (rebase of #44)
-
7c37e721de
Merge pull request #68 from sipa/nits_real-or-random_patch-6
Address some nits
-
87fa069b8f
Mention SHA256 block size
Rebased by Pieter Wuille
-
463a55935b
Merge pull request #67 from sipa/jonasnick_small-fixes
Mention SHA256 block size (rebase of #45)
-
d191359e75
Removed reference to 0xc1 leaf version.
No longer necessary with 32B pubkeys.
-
bip-taproot: fix small typo (is does not) 1a8818a446
-
849580166a
Merge pull request #70 from kanzure/bip-taproot-fix-typo
bip-taproot: Fix minor grammar issue
-
55beff3376
Merge pull request #69 from jachiang/2019-09-leaf-version
Removed reference to 0xc1 leaf version.
-
Move/reword tagged hashes motivation 77dad346ec
-
Rework resource limits section f2899666f8
-
Remove P2SH support 1ee15f7dd9
-
Euler's Criterion prime only nit aa463b8193
-
b9927356aa
Merge pull request #74 from elichai/patch-2
Euler's Criterion prime only nit
-
2d2e268ee8
Merge pull request #72 from sipa/201909_no_p2sh
Remove P2SH support
-
6aa933b178
Merge pull request #73 from sipa/201909_limits
Rework resource limits section
-
Fixups 079ae4b048
-
05efb5de84
Merge pull request #71 from sipa/201909_fix_tag_rationale
Move/reword tagged hashes motivation
-
d51109a03f
Merge pull request #76 from sipa/201909_tapscript_resource_fixups
Fixups
-
Extend codeseparator_position from 16 to 32 bits 4c2eb9a600
-
Extend input_index from 16 to 32 bits 0d5ac28f2c
-
typo 7ce33c01ec
-
separate p2sh wrapped security rationale f831386103
-
9033e43001
Merge pull request #78 from ajtowns/201909-p2sh80b
minor wording fixes
-
Remove 0xc1 479fe5f365
-
8d893f9c06
Merge pull request #79 from jonasnick/0xc1
Remove 0xc1
-
Accept seckey in the form of bytes and not int in the reference BIP-schnorr code to match the spec. 472911379c
-
Add x() and y() functions for points to bip-schnorr 7e273fbda6
-
Standardize on secret key in bip-schnorr 5c52872fe0
-
Add is_quad function to bip-schnorr reference code 1882aa7b8f
-
Add taproot_tweak_pubkey and taproot_tweak_privkey functions to bip-taproot wallet section 398897cd29
-
Replace taproot_tweak_pubkey assertion with exception and add it to taproot_tweak_seckey too a6e5c16821
-
Link to Schnorr's paper instead of Wikipedia 3f61b2b1e7
-
730feed75a
Merge pull request #81 from jonasnick/tweaks
Improve readability of bip-taproot wallet section
-
90d9e21825
Merge pull request #82 from real-or-random/patch-8
Link to Schnorr's paper instead of Wikipedia
-
00f941b8c7
Merge pull request #80 from jonasnick/bytes
Accept seckey in the form of bytes and not int in the reference BIP-schnorr code...
-
4aa889e6ac
Merge pull request #77 from sipa/201909_bigger_opspos
Extend codeseparator_position and input_index from 16 to 32 bits
-
Fix formula 15d5aa2732
-
Increase max Merkle path length 6b72dfff51
-
e5888935ca
Merge pull request #83 from sipa/branch_limit
Increase max Merkle path length
-
Small fix: 0xc1 is possible as first control block byte 9413cc1f07
-
c8e82957a2
Merge pull request #85 from sipa/201910_c1
Small fix: 0xc1 is possible as first control block byte
-
Small fixes from review with real-or-random 69f1c93d92
-
HTTPS links where possible 3c7fd7a830
-
5ecd376cac
Merge pull request #86 from sipa/201910_simple_fixes
Small fixes from review with real-or-random
-
Use is_square/is_positive and introduce algorithm names 0655cc3c64
-
Formulate claims about BatchVerify more accurately 1442d4dabc
-
1e00d6ef6a
Apply suggestions from code review
Co-Authored-By: Tim Ruffing <tim@timruffing.de>
-
Prefix infinite with is_ 8c0b29cc94
-
Drop other curve comment cdf7dd8cca
-
Typo 348110ec52
-
ad539ef432
Merge pull request #87 from sipa/201910_square_positive
Use is_square/is_positive and introduce algorithm names
-
e139975eff
bip-schnorr: more on provable security
I'll try to get a link to the CCS paper that does not have a paywall...
-
bip-schnorr: more on (e,s) 2d9877e6e1
-
80c6129cee
Merge pull request #94 from real-or-random/patch-9
bip-schnorr: incorporate results of Neven, Smart, Warinschi
-
Explain that MuSig needs key prefixing 59ac6a9683
-
d434c18af8
Update bip-schnorr.mediawiki
Co-Authored-By: Tim Ruffing <tim@timruffing.de>
-
Clarify interaction x-only keys with verification 0a45ecbf04
-
0c7bbf83c6
Merge pull request #92 from sipa/201910_musig_needs_keyprefix
Explain that MuSig needs key prefixing
-
More on key generation 2a9a70c92a
-
ae32d243cd
Merge pull request #93 from sipa/201910_clarify_keygen
Clarify interaction x-only keys with verification
-
annex is bit 0 of spend_type 01e0c43023
-
87caa68a8f
Merge pull request #96 from ajtowns/201910-annexbit
annex is bit 0 of spend_type
-
0176ed1871
Change reference for ECDSA proofs
Refer to Manuel Fersch's dissertation for provable security of ECDSA. It's freely accessible and multiple results put well in context.
-
da1bc18ce9
Merge pull request #108 from real-or-random/patch-10
bip-schnorr: Change reference for ECDSA proofs
-
Improve section on alternatives to OP_CHECKMULTISIG 474d214d03
-
Address aj comments 6ad79bcd46
-
Explain why CMS is not turned into SUCCESSx 2973e09a88
-
852951276f
Merge pull request #109 from sipa/201910_multisig
Improve section on alternatives to OP_CHECKMULTISIG
-
436f14d9d7
Merge pull request #111 from sipa/201910_whynocmssuccess
Explain why CMS is not turned into SUCCESSx
-
Consistently mention resource limits in bip-tapscript 6d6b9c6940
-
Elaborate on default and alternative signing f95ac70606
-
322ce53625
Update bip-schnorr.mediawiki
Co-Authored-By: Tim Ruffing <tim@timruffing.de>
-
da4721cdc6
Update bip-schnorr.mediawiki
Co-Authored-By: Tim Ruffing <tim@timruffing.de>
-
89b32a095d
Merge pull request #113 from sipa/201910_altsigning
Elaborate on default and alternative signing
-
cf43d29fff
Merge pull request #112 from sipa/201910_success_above_all_else
Consistently mention resource limits in bip-tapscript
-
typos 73b8e3aeeb
-
improve rationale for key prefixing db1973ffba
-
e174022b36
Merge pull request #115 from real-or-random/patch-12
typos
-
12d8d5baa8
use bytes() instead of b'' - avoid markdown issue
Currently github markdown renders `b''` inside `<source>` tags incorrectly. This makes `h = b''` show as `h = b` and creates some confusion. The issue can be avoided by using bytes() to create empty byte array
-
fda77055c7
Merge pull request #122 from dgpv/patch-3
bip-taproot: use bytes() instead of b'' - avoid markdown issue
-
db8d6d426f
fix docstring in taproot_output_script
the final "-None" line in the docstring of `taproot_output_script` example function was actually outside of the docstring
-
eacf0c6533
Merge pull request #120 from dgpv/patch-2
bip-taproot: fix docstring in taproot_output_script
-
Settle on notation: is_square(y), has_square_y(P) 0c6a9cffad
-
2f1c4d80ae
Merge pull request #124 from sipa/square_terminology
Settle on notation: is_square(y), has_square_y(P)
-
Fix test vector generation code after changing schnorrsig_sign api 854a33ab48
-
Adjust test vector generation code to latest terminology 220df7da78
-
Check infinity in is_positive c0f0c8d43d
-
Make more clear that signing function in test vectors generation code isn't intended to be used anywhere else 35f1fface5
-
Fix typo in reference code comment 0ec01e9255
-
1bb025aa22
Merge pull request #116 from jonasnick/test-vec-terminology
Adjust reference code and test vectors to latest bip
-
Fix point_from_bytes accepting out-of-range pubkeys and add test vector 8e7aef083e
-
857dd625b5
Merge pull request #114 from real-or-random/patch-11
improve rationale for key prefixing
-
Update test-vectors.csv 8a8a35bfc5
-
Link design section of BIP Schnorr in Specification 08622c9494
-
3f62751809
Merge pull request #121 from jonasnick/add-test-vector
Fix point_from_bytes accepting out-of-range pubkeys and add test vector
-
78eb015f63
fix: script spend, not key spend
For the key spend the script tree depth is not revealed, it is only done for script spends. This sentence makes sense only for the script spend.
-
73ade2d61b
Merge pull request #126 from MaxHillebrand/patch-1
fix: script spend, not key spend reveals tree depth
-
230f6cb734
Merge pull request #125 from fjahr/patch-1
Link design section of BIP Schnorr in Specification
-
Internal pubkey calculation fixed in taproot_tweak_pubkey() de82b3ad26
-
3700e18055
Merge pull request #128 from codeShark149/tweak_pubkey_change
Internal pubkey calculation fixed in taproot_tweak_pubkey()
-
Fxied typo in taproot_sign_script() ad4156a394
-
tapscript: fix minor typo 5ceb42b48b
-
c9931d156c
Merge pull request #130 from LaurentMT/patch-1
Fxied typo in taproot_sign_script()
-
Fix typo af1638ce18
-
c936a9bc4b
Merge pull request #132 from agis/patch-2
Fix typo
-
G refers to secp256k1 base point rather generator 7e98e2fd84
-
5abcbca343
ADD: Require Schnorr BIP for Taproot
Per https://github.com/bitcoin/bips/blob/master/bip-0001.mediawiki: "BIPs may have a Requires header, indicating the BIP numbers that this BIP depends on"
-
c98970085d
BIP16 has no relation to bip-taproot/tapscript
Previously did.
-
b79935a883
Merge pull request #136 from instagibbs/patch-10
BIP16 has no relation to bip-taproot/tapscript
-
Add clarification of semantics of 0x00 hash type e5918b3b29
-
0af4a35295
ADD: Require Schnorr and Taproot BIPs for Tapscript
https://github.com/sipa/bips/pull/135#issuecomment-552754867
-
FIX: BIPs should be specified as lowercase to match filenames f620c87eb7
-
8b92d05be9
bip-taproot: clarify bip-schnorr reference code
- update the paragraph in question to more clearly convey that the helper functions, and not the Python3 example code, are from the bip-schnorr reference code - add a link to the reference code in https://github.com/sipa/bips/blob/bip-schnorr/bip-schnorr/reference.py
-
Replace R with P in taproot_tweak_seckey 7bce5a0930
-
1e27c4e307
Merge pull request #142 from OrfeasLitos/python-typo
Replace R with P in taproot_tweak_seckey
-
b417bb3c50
Add links to unlinked BIPs
Only first mention of each BIP is made into a link
-
clarify 211 hash bytes and non-reuse of keys 1a9c7f948a
-
tweak 211 bytes text b8cbd419e6
-
8861bd503a
remind reader where [:] is defined
in addition to `point`. This caused confusion for one reader who expected inclusive at end of range.
-
e5d6ee25e9
Merge pull request #145 from instagibbs/patch-11
remind reader where [:] is defined
-
bc0c57e1fd
Merge pull request #144 from devrandom/wording
Clarify 211 hash bytes and non-reuse of keys
-
5dab10b0b6
Merge pull request #135 from pyskell/patch-1
ADD: Require BIPs for Taproot and Tapscript
-
aa337b9fbb
Merge pull request #134 from hebasto/20191111-base-point
G refers to the secp256k1 base point rather generator
-
a6d7059ce0
Merge pull request #137 from AdamISZ/hash-0-meaning
Add clarification of semantics of 0x00 hash type
-
a00c4a3dc9
Merge pull request #143 from OrfeasLitos/link-to-other-bips
Add links to unlinked BIPs
-
3e3ac64b53
Merge pull request #140 from jonatack/clarify-and-link-to-bip-schnorr-reference-code
bip-taproot: clarify bip-schnorr reference code
-
c5a7332ea3
Merge pull request #131 from afk11/fix-typo-bip-tapscript
tapscript: fix minor typo
-
de14bad4dc
make clear it's script branch
In this context we are talking about the script branch, not the Merkle tree branch, right? If so, then this should clear things up a little.
-
Fix typo in schnorr, footnote 2 cacb82fc6d
-
b9d12f79fb
Merge pull request #146 from MaxHillebrand/patch-1
make clear it's script branch
-
6b906253b1
Merge pull request #147 from OrfeasLitos/fix-typo-sig
Fix typo in schnorr, footnote 2
-
e544fc66ba
Link to proof sketch of security of implicit Y
Thanks to @ajtowns for providing the link
-
Add missing quote 314e9fd904
-
34a37231e7
Merge pull request #149 from OrfeasLitos/add-missing-quote
Add missing quote
-
grammar typo fix: inserted "be" 09c12e4052
-
75b464ad76
Add missing dots that denote multiplication
Throughout the document, elliptic curve multiplication is denoted with dots, as in `d'⋅G` as opposed to `d'G`. This is not the case in one place in the 'Default Signing' section, and one place in 'Adaptor Signatures' section Missing dots are added for consistency.
-
51c2c12158
Merge pull request #151 from dgpv/patch-5
Nit: bip-schnorr: Add missing dots that denote multiplication
-
fbd304575f
Replace BIP66 link with BIP146
BIP66 does not mention the inherent ECDSA malleability, but BIP146 does
-
Rename is_y_square to is_negated in taproot signing 9208857b92
-
Fix paragraph naming and typo 4fa7cba641
-
Rephrase "previous design choice" to "list above" 8ca122e8fe
-
Typo: max bytes hashed for sig is 210 75d753868c
-
Replace signing with signature before validation 1e1795de46
-
Typo: script signature max bytes unhashed are 247 633b52fbc0
-
88778d77e8
Merge pull request #155 from jonasnick/negate
Rename is_y_square to is_negated in taproot signing
-
Replace "both are not" with "neither is" 7ec4ce9a8d
-
Mention hash_type malleability would change wtxid b44d5c9531
-
9648889b4f
Merge pull request #150 from stefanwouldgo/patch-1
grammar typo fix: inserted "be"
-
3d3bd7660c
Merge pull request #160 from OrfeasLitos/clarify-choices
Rephrase "previous design choice" to "list above"
-
1650cacac0
Merge pull request #156 from hebasto/20191123-grammar-and-reference
Fix paragraph naming and typo
-
Mention that miners could malleate signatures 2e79be9f72
-
Add missing closing parenthesis and comma 83e886ce07
-
Update bip-tapscript.mediawiki 6a72458bf9
-
075823bdd5
Merge pull request #169 from andrewtoth/patch-1
Add missing closing parenthesis and comma
-
Fix bip-schnorr footnote 7 by specifying that we're referring to P's y coordinate and not some undefined 'x' 3acb150829
-
Replace references to Euler's criterion with Legendre symbol in bip-schnorr 382a1d19a0
-
4c638b3843
Merge pull request #164 from OrfeasLitos/neither-instead-of-both
Replace "both are not" with "neither is"
-
Clarify bip-taproot digest difference to bip143 regarding sub-hashes 2c6b472e9c
-
Improve clarity of footnotes for lift_x 93e1921d83
-
Nits adf4d78e6c
-
Fix @jonasnick's comment fd898f118a
-
017ca0c69b
Merge pull request #173 from kallerosenbaum/bip-schnorr
Nits
-
034e97bd6e
Merge pull request #170 from jonasnick/footnote7
Fix footnote 7 and remove references to Euler's criterion
-
a9190ff92b
Merge pull request #172 from jonasnick/footnote9
Improve clarity of footnotes for lift_x
-
9194a7b582
Merge pull request #171 from jonasnick/footnote16
Clarify bip-taproot digest difference to bip143 regarding sub-hashes
-
2a738c6956
Merge pull request #165 from OrfeasLitos/wtxid-malleability
Mention hash_type malleability would change wtxid
-
4b25ff7b92
Merge pull request #148 from OrfeasLitos/link-implicit-y-proof-sketch
Link to proof sketch of security of implicit Y
-
fix singular/plural ambiguity cc6fa25c79
-
Fix reference formatting 2e0c9435a8
-
4b4c656790
Merge pull request #162 from OrfeasLitos/signing-validation
Replace signing with signature before validation
-
16d34fafa1
Merge pull request #166 from stefanwouldgo/patch-3
fix singular/plural ambiguity
-
2a2d4231ff
Merge pull request #154 from OrfeasLitos/replace-66-with-146
Replace BIP66 link with BIP146
-
2d68aea170
Merge pull request #161 from OrfeasLitos/max-sig-unhashed-bytes
Typo: max bytes hashed for sig is 210
-
b1d93cdd2c
Merge pull request #174 from hebasto/patch-1
Fix reference formatting
-
92582c2a33
Clarify why we don't want short hashes
This is supposed to supersede https://github.com/sipa/bips/pull/158. I tried to say this carefully. I don't think that multiparty signing is in general broken with short hashes. For example the attack in #158 could be avoided by letting everybody not only commit to the nonce but also to the message. It's just that using a collision-resistant hash just eliminates the problem entirely...
-
993a1ccdf1
Merge pull request #175 from real-or-random/patch-13
Clarify why we don't want short hashes
-
Low-S ECDSA is non-malleable under nonstandard assumptions aa18fdb07e
-
Replace private key with secret key 633cca9b1c
-
40eccd5d3c
Merge pull request #180 from jonasnick/secret-key
Replace private key with secret key
-
431ebd2f44
Merge pull request #177 from sipa/201912_lows_ecdsa_nonmalleable
Low-S ECDSA is non-malleable under nonstandard assumptions
-
Improve and restructure motivation and design ba8b23b820
-
Add an informal summary of the design a78a161b4b
- sipa closed this on Dec 15, 2019
Contributors