Commit Graph
17 Commits
Author SHA1 Message Date
Dmitry Petukhov 01679c8f29 BIP88: clarifications, mistype fixes 2021-05-16 12:38:37 +05:00
Dmitry Petukhov 3d9a359d1d BIP88: number assigned, rename file and update README 2021-05-15 11:37:02 +05:00
Dmitry Petukhov 25f8c3e694 bip-path-templates: Add Compatibility section 2021-05-15 11:24:37 +05:00
Dmitry Petukhov c90c76bc1b bip-path-templates: describe Wildcard index range 2021-05-15 11:24:37 +05:00
Dmitry Petukhov 6ffc3542f8 bip-path-templates: Change chars for ranges from "[]" to "{}" 2021-05-15 11:24:37 +05:00
Dmitry Petukhov 2305c5bda6 Add BIP draft for BIP32 path templates 2021-05-15 11:24:36 +05:00
Dmitry Petukhov 7a434d4d76 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.
2020-01-19 14:47:33 -08:00
Dmitry Petukhov 0f9ab0cec9 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
2020-01-19 14:47:33 -08:00
Dmitry Petukhov d87c5c8801 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
2020-01-19 14:47:33 -08:00
Dmitry Petukhov 953dd23665 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
2020-01-19 14:47:33 -08:00
Dmitry Petukhov 8faf97e720 BIP-174: add missing types to Appendix A; fix proprietary type names
PSBT_INPUT_PROPRIETARY -> PSBT_IN_PROPRIETARY

PSBT_OUTPUT_PROPRIETARY -> PSBT_OUT_PROPRIETARY

to be consistent with other in/out type names that use shortened `IN` and `OUT`
2019-12-14 20:39:40 +05:00
Dmitry Petukhov 65f0b3dd62 BIP-174: test data: fix value length
In the test case "Case: PSBT With invalid output witnessScript typed key", after PSBT_OUT_WITNESS_SCRIPT key with garbage data (which ends with `...478ef51309d`, follows value `2b` which would denote the length of the data value of the key. But the length of actual remaining data is only 7 bytes. Thus, an implementation that reads key-value pairs and checks for validity of the key data after it has read the current key-value pair, will not be able to hit the exact condition intended for this test case: extra data within the key itself. This is because such implementation will hit serialization error when it will try to read the data of the value and will get the short read.

Reading full key-value pair and then checking key format afterwards is fairly normal thing to do, as the format of the keys with all their meaning is an abstraction of higher level than just the simple key-value serialization format.

The proposed change is to replace byte `2b` after the key data to `06` and thus make the value length in the key-value pair valid (not going beyond the end of the data).

base64 encoding has been changed accordingly.
2019-12-09 17:30:47 +05:00
Dmitry Petukhov 267c02a4b5 BIP174: remove 'first byte is the type' comment for key data
As the key type is now defined as compact size integer, `At the beginning of each key is a compact size unsigned integer representing the type`, the comment in the first table in the document, about first byte of the key being the key type is no longer accurate.

As the structure of the key data is described further in the text after the table, and the comment that it starts with the compact size integer seems a bit long to be in that table, I think it is better to just remove the comment about the key data structure from the table, and leave the explanation to the text after the table.
2019-12-09 12:21:09 +05:00
Dmitry Petukhov 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.
2019-11-22 00:21:05 +05:00
Dmitry Petukhov 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
2019-11-05 02:13:24 +05:00
Dmitry Petukhov 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
2019-11-04 19:15:12 +05:00
Dmitry Petukhov 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
2019-05-10 03:09:54 +05:00